量角器没有等待页面加载

时间:2017-01-15 08:40:24

标签: javascript asynchronous protractor

我使用量角器创建了一个基本测试,点击一个元素,然后在新页面上检查是否存在给定元素,但是Protractor似乎没有等待,它在点击之后但在新页面加载之前运行断言。我正在寻找的元素可以在两个页面上使用,因此在新页面加载之前,量角器会看到旧页面上的元素。有人可以告诉我,我做错了什么?

it('should check when new page is loaded', function () {
button.click().then(function (){
    return expect(newElement).to.exist;
});

2 个答案:

答案 0 :(得分:4)

首先,添加" getPageTimeout"变量到您的Protractor配置文件。

如果您还没有使用它。这是根据应用程序中的平均页面加载时间设置全局页面超时。

<强> conf.js

getPageTimeout: 120000,//change it based on your app response time

如果它没有帮助,那么在检查您要查找的实际元素之前,请验证下一页的页面标题(假设它与上一页不同)。

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();
});

即使这没有帮助,您也可以使用预期的条件。有几个预先定义的条件要明确等待。如果您想等待元素出现:

var EC = protractor.ExpectedConditions;

var e = element(by.id('xyz'));
browser.wait(EC.presenceOf(e), 10000);

expect(e.isPresent()).toBeTruthy();

答案 1 :(得分:0)

您可以在配置文件

中使用以下方法
jasmineNodeOpts: {
    showColors: true,
    includeStackTrace: true,
    defaultTimeoutInterval: 1440000
},

在规范文件中,您可以根据页面和对象可见性自定义等待时间

browser.sleep(20000);

如果您正确定制等待时间,我希望上述方法在所有情况下都能正常工作。