browser.navigate()背面();导致“文档在等待结果时被卸载”错误

时间:2015-10-13 19:31:09

标签: javascript automated-tests protractor

您好 我已经阅读了平台上的所有问题/答案,但没有一个能帮助我解决我的问题,关键是我有以下测试脚本:

it('Verify user sees the home page correctly when hitting back button', function () {
    browser.get('/flight/los-angeles/');
    expect(testUtils.getTextFromField(topSearchBarPage.airportDestLocator)).toContain("LAX");
    element.all(by.css(".day-droppable.ui-droppable")).get(30).click();
    element(by.css(".btn-primary")).click();
    browser.navigate().back();
    expect(browser.getTitle()).toMatch('page title');
    expect(browser.getCurrentUrl()).toContain("/flight/los-angeles/");
});

然后我收到了这个错误:

UnknownError: javascript error: document unloaded while waiting for result

我可以看到(因为我已经安排了睡眠),在执行navigate.back()之后,测试尝试重新加载页面,当它尝试执行期望时,它会抛出错误。

这是导航后应用的样子。

reload

我在GitHub中发布了这个问题,这是最重要的信息:

  

我已经移除了那一步(导航回来)并且期望功能正常工作,我在navigate.back()之后放置了一个browser.sleep(5000),这就是我发现它正在尝试执行下一步的方法。 expecs“在”空白页面上“。

然后,sjelin,添加了这个

  

我很确定问题实际上只是那个元素(by.css(“。btn-primary”))。click();尚未在browser.navigate()之前完成.back();发生。尝试添加browser.waitForAngular()

最后我对此发表了评论。

  

@sjelin我已经尝试了你所说的并且它不起作用,事实上,点击动作确实发生并且应该完成它应该因为我在测试运行时看到动作完成...所以,我认为这里的问题是navigate()。back()是打开或刷新没有URL,下一步是抛出错误的行为。

1 个答案:

答案 0 :(得分:0)

如果您明确等待click()完成该怎么办?

element(by.css(".btn-primary")).click().then(function () {
    browser.navigate().back();

    expect(browser.getTitle()).toMatch('page title');
    expect(browser.getCurrentUrl()).toContain("/flight/los-angeles/");
});