use*_*873 1 javascript asynchronous protractor
我用量角器创建了一个基本测试,单击一个元素,然后在新页面上检查给定元素是否存在,但是量角器似乎没有等待,它在单击之后但在加载新页面之前运行了断言。我要查找的元素在两个页面上都可用,因此量角器会在加载新页面之前在旧页面上看到该元素。有人可以告诉我我在做什么错吗?
it('should check when new page is loaded', function () {
button.click().then(function (){
return expect(newElement).to.exist;
});
Run Code Online (Sandbox Code Playgroud)
首先,将“ getPageTimeout”变量添加到您的量角器配置文件中。
如果尚未使用它。这是根据应用程序中的平均页面加载时间设置全局页面超时。
conf.js
getPageTimeout: 120000,//change it based on your app response time
Run Code Online (Sandbox Code Playgroud)
如果仍然不能解决问题,则在检查您要查找的实际元素之前,请验证下一页的页面标题(假设其与上一页不同)。
it('should check when new page is loaded', function () {
button.click().then(function (){
browser.getCurrentUrl();
browser.getTitle().then(function (title) {
expect(title).toEqual('Next Page Title');
});
return expect(newElement.isDisplayed()).toBeTruthy();
});
Run Code Online (Sandbox Code Playgroud)
即使这不能帮助您使用预期的条件,也要明确等待几个预定义的条件。如果您要等待某个元素出现,请执行以下操作:
var EC = protractor.ExpectedConditions;
var e = element(by.id('xyz'));
browser.wait(EC.presenceOf(e), 10000);
expect(e.isPresent()).toBeTruthy();
Run Code Online (Sandbox Code Playgroud)