【问题标题】:Protractor to wait for page to load JS script before continuing?量角器在继续之前等待页面加载 JS 脚本?
【发布时间】:2017-07-24 15:17:45
【问题描述】:

由于页面加载了额外的 JS 脚本,我的量角器测试(不是角度)失败。我试过 .then 但没有运气。添加的额外 JS 不是 XHR 请求。我假设它包含在包中,只是等待被调用。

长版: 单击按钮后,用户将被重定向到新页面。 但是,在这个新页面中,添加了一个 JS 脚本和一些图像。这会创建一个新的加载时间。问题是量角器在页面仍在加载此 JS 和其他内容时单击。

我尝试使用 .then() 但没有运气。我假设它只等待服务器响应。

我可以通过添加 browser.sleep() 让它运行。我知道这不是一个好的做法,所以我仍在研究。

我的 .then 代码 sn-p 示例

element(by.css("[type='submit']")).click().then(function(){
//Enter payment info
element(by.css(".number[type='text']")).sendKeys(data.validCard); //Mastercard
element(by.css("select.exp_month")).element(by.css("[value='05']")).click();
element(by.css("select.exp_year")).element(by.css("[value='2021']")).click();
element(by.css("input.cvc[type='text']")).sendKeys("1234");
element(by.css("input.full-name[type='text']")).clear().sendKeys(randomName);
elm = element(by.css("button[type='submit']"));
browser.wait(EC.presenceOf(elm), 60000);
element(by.css("button[type='submit']")).click();

});

【问题讨论】:

    标签: javascript protractor automated-tests


    【解决方案1】:

    我觉得你知道这一点,但为了清楚起见,.then 用于等待一个承诺解决,而不是一个元素。您正确地使用了等待,等待页面加载,但目标应该是指示正在加载的页面,而不是按钮本身......除非它们是相同的东西。

    首先,虽然这可能不是答案,但presenceOf 将在按钮在 dom 中 时返回,并且可能还不可见。我发现在这些情况下使用isClickable 通常会更好。

    最终,您只需要在 dom 中找到 js 加载完成时发生的条件,然后等待。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-21
      • 1970-01-01
      • 1970-01-01
      • 2012-01-28
      • 2018-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多