Действие щелчка транспортира зависит от ptor.sleep(). Как я могу решить правильно?
Я новичок, пытающийся не полагаться так сильно или вообще не использовать ptor.sleep()
звонки, особенно после нажатия ниже. Строка ниже никогда не получает значение (все они возвращают Nan), если я не включу ptor.sleep(1000);
позвонить после click()
ниже.
Я предпринял различные попытки заставить массив разрешать элементы до результатов списка после щелчка, оборачивания щелчка в функции и т. Д., Но все, что я пробовал, работает без вызовов режима сна. Уже прочитал о транспортире управления потоком.
devCountString = parseInt(arr[i]);
Спасибо за любые идеи, может быть, что-то очевидное, что я пропустил, чтобы я мог удалить ptor.sleep()
звонки.
моя спецификация:
describe('\n == patch List suite results == \n', function() {
// login already was done in config files, onPrepare function.
var ptor, noFilterCount;
// needed here if we turn ptor.ignoreSynchronization = false;
beforeEach(function() {
ptor = protractor.getInstance();
ptor.ignoreSynchronization = true;
browser.get('https://my.abc.com:3000/fixes');
ptor.sleep(1200);
}); //end beforeEach()
it('11 - verify filter fewer', function() {
var sevStringElm, sevString;
var applicableCount;
ptor.ignoreSynchronization = false;
ptor.sleep(500);
sevStringElm = element(by.css("input.form-control.bf-spinner"));
sevStringElm.clear();
ptor.sleep(500);
sevStringElm.sendKeys( '8' );
ptor.sleep(500);
// click on the "fewer" spinner, wrap the click to wrap the .
var fewerPromise = element(by.css("span.bf-spinner-toggle:nth-child(2)")).click();
ptor.sleep(1000);
// now get the list of clickable elements in each device card. by title
var applicableDevicesElm = element.all(by.css("[title$='Applicable\ Devices']"));
applicableDevicesElm.getText().then(function(arr) {
console.log("arr.length= "+arr.length);
for (var i = 0; i < arr.length; i++) {
devCountString = parseInt(arr[i]);
expect(devCountString).toBeLessThan( 9 );
};
});
});
1 ответ
Каждый раз, когда действие переходит к веб-драйверу, Protractor помещает его в очередь потока, как показано в документации. В результате, когда вы начинаете проверять свои элементы после щелчка, очередь должна была разрешить зависимости и подготовить ваше состояние для поиска. В любом случае, даже если вы не хотите иметь неявную упаковку, которую Protractor выполняет со своими действиями (которые всегда являются asyc), вы можете поместить .then(function(){})
после клика и вставьте логику пост-клика в эту анонимную функцию обратного вызова. На заметку, вы должны использовать ptor
больше. использование browser
вместо этого это смешивает в возможностях экземпляра транспортира. Пример: browser.sleep(1000)