下面是我在规范中的代码。工具箱是常用操作的库,例如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的异步特性吗?如何避免这种情况?

最佳答案

您可以使用如下所示的承诺按需要的顺序执行它们:

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

关于javascript - Protractor 脚本过快,无法处理叠加层上的元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52394396/

10-11 13:15
查看更多