【问题标题】:Protractor script is too fast and elements on overlay are not handled量角器脚本太快,覆盖上的元素未处理
【发布时间】:2019-02-22 22:50:27
【问题描述】:

以下是我在规范中的代码。 Toolbox是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的异步特性吗?如何避免这种情况?

【问题讨论】:

    标签: javascript automation protractor automated-tests


    【解决方案1】:

    你可以使用这样的 Promise 按想要的顺序执行它们:

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

    【讨论】:

    • 它仍然无法工作,因为覆盖确实出现了,但没有处理覆盖中的任何元素。我无法减慢脚本,因为 browser.sleep 无法正常工作,也无法在 VSCode 上进行调试。 :(
    • @williamtell 如果您希望以正确的顺序执行步骤,请在每个步骤中使用 .then(function(){}。
    猜你喜欢
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 2020-09-10
    • 1970-01-01
    相关资源
    最近更新 更多