Скрипт транспортира слишком быстрый, а элементы наложения не обрабатываются - PullRequest
0 голосов
/ 18 сентября 2018

Ниже мой код в спецификации.Панель инструментов - это библиотека часто используемых операций, таких как sendKeys () и т. Д.

async enterProjectDetails() {
toolbox.enterText(this.projectTitle, "001 Project Name");
toolbox.enterText(this.projectDescription, "New project");
await toolbox.click(this.someTextBox);
//on clicking this text box an overlay is displayed
//Used the below but none of them worked
// toolbox.waitUntilVisible(this.chkBoxOnOverlay);

// var EC = protractor.ExpectedConditions;  <--- didn't work
// browser.driver.wait(function () {
//  browser.wait(EC.visibilityOf(this.chkBoxOnOverlay), 10000);
//  return elem;
// });

//  var EC = protractor.ExpectedConditions;  <--- didn't work
// browser.wait(EC.presenceOf(element(by.xpath("(//li[@class='ng-star-inserted']//mat-checkbox)[1]"))), 5000);


// await toolbox.click(this.chkBoxOnOverlay);
toolbox.click(this.cancel);  <--- cancel on the overlay is also skipped
//MORE CODE ALL OF WHICH ARE EXECUTED BY HIT OR MISS
}

Сценарий выполняет ввод значений в текстовое поле под оверлеем и завершается.Значение, которое нужно ввести в оверлей, является обязательным полем, и я не могу перейти со страницы, не проверив некоторые значения.

Есть ли способ замедлить транспортир?Все console.logs также выполняются одновременно (от первой строки кода до последней строки.) Это из-за асинхронной природы JS?Как этого избежать?

1 Ответ

0 голосов
/ 20 сентября 2018

Вы можете выполнить их в желаемом порядке, используя такие обещания:

toolbox.enterText(this.projectTitle, "001 Project Name").then(function () {
    toolbox.enterText(this.projectDescription, "New project").then(function(){
       toolbox.click(this.someTextBox);
    });
});
...