由于额外的JS脚本被加载到页面,我的量角器测试(非角度)失败。我试过了,但是没有运气。添加的额外JS不是XHR请求。我认为它包含在包中,只是等待被调用。
长版: 单击按钮后,用户将被重定向到新页面。 但是,在这个新页面中,正在添加一个JS脚本以及一些图像。这会创建一个新的加载时间。问题是当页面仍然加载这个JS和其他东西时,量角器正在点击。
我尝试使用.then()但没有运气。我假设它只等待服务器响应。
我能够通过添加browser.sleep()来让它运行。我知道这不是一个好习惯,所以我还在研究。
我的.then代码段示例
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();
});
答案 0 :(得分:0)
我觉得你知道这一点,但为了清楚起见,.then
用于等待承诺解决,而不是元素。你正确地使用等待,等待页面加载,但目标应该是指示正在加载的页面,也许不是按钮本身...除非它们是相同的东西。
首先,虽然这可能不是答案,但当按钮presenceOf
将会返回,并且可能尚未显示。我发现在这些情况下使用isClickable
通常会更好。
最终,你只需要在js完成加载时在dom中找到一个条件,然后等待。