javascript错误:在等待结果时卸载文档

JavascriptError: javascript error: document unloaded while waiting for result

本文关键字:卸载 文档 结果 在等待 错误 javascript      更新时间:2023-09-26

在使用量角器测试angular应用程序时。

我现在正面临一个问题。这是一个断断续续的问题。我收到"JavascriptError: javascript错误:文档卸载而等待结果"。

下面是日志:

Failures:
[18:51:46][Step 4/4] 1) vacancies should create new job listing
[18:51:46][Step 4/4]   Message:
[18:51:46][Step 4/4]  [31m    Failed: javascript error: document unloaded while waiting for result
[18:51:46][Step 4/4]       (Session info: chrome=44.0.2403.155)
[18:51:46][Step 4/4]       (Driver info: chromedriver=2.15.322455 (rg5th540dac8d0c453355d3d922c91ads1231),platform=Mac OS X 10.10.4 x86_64) [0m
[18:51:46][Step 4/4]   Stack:
[18:51:46][Step 4/4]     JavascriptError: javascript error: document unloaded while waiting for result
[18:51:46][Step 4/4]       (Session info: chrome=44.0.2403.155)
[18:51:46][Step 4/4]       (Driver info: chromedriver=2.15.322455 (rg5th540dac8d0c453355d3d922c91ads1231),platform=Mac OS X 10.10.4 x86_64)
[18:51:46][Step 4/4]         at Array.forEach (native)
[18:51:46][Step 4/4]     From: Task: Run it("should create new job listing") in control flow
[18:51:46][Step 4/4]         at Array.forEach (native)
[18:51:46][Step 4/4]     From asynchronous test: 
[18:51:46][Step 4/4]     Error
[18:51:46][Step 4/4]         at Suite.<anonymous> (/client/test/e2e/vacancies/vacancies.create.specs.js:67:7)
[18:51:46][Step 4/4]         at Object.<anonymous> (/client/test/e2e/vacancies/vacancies.create.specs.js:17:3)

日志指向的行是测试的起始行。

下面是代码片段:
67 it('should create new job listing', function () {
68        //Login As Admin To Access Vacancies Feature
69        loginAsManager();
.
.        //load manager's dashboard list page
.        dashboardPage = new DashboardPage();
.        dashboardPage.vacanciesTab.click();
.
.        //load vacancies list page
.        var vacanciesUrl = browser.baseUrl + '#/vacancies';
.        browser.waitForAngular();
.        expect(browser.getCurrentUrl()).toEqual(vacanciesUrl);
.        vacanciesPage = new VacanciesPage();
.        vacanciesPage.addVacancyButton.click();
.
.

我认为这里的意思是在expect完成它的断言之前,目标页面已不可用或已卸载。

所以,在每个页面导航之后,我尝试添加"browser.waitForAngular()"。但这并没有帮助这个断言通过。

奇怪的是同样的测试在Ubuntu14.04平台上通过了但在Mac OS X 10.10.4 x86_64

它不会每次都在同一个测试中失败。这总是一个不同的测试

任何建议都会很有帮助。

谢谢。

我可以通过让浏览器在每次更改URL后休眠几秒钟来解决这个问题。

下面是代码片段:
67 it('should create new job listing', function () {
68        //Login As Admin To Access Vacancies Feature
69        loginAsManager();
.
.        //load manager's dashboard list page
.        dashboardPage = new DashboardPage();
.        dashboardPage.vacanciesTab.click();
.
.        //load vacancies list page
.        var vacanciesUrl = browser.baseUrl + '#/vacancies';
.        browser.sleep(2000);
.        expect(browser.getCurrentUrl()).toEqual(vacanciesUrl);
.        vacanciesPage = new VacanciesPage();
.        vacanciesPage.addVacancyButton.click();
.
.

我认为这不是解决这个问题的好办法。

如果有人有更好的解决办法,我会很高兴听到的。

干杯Gaurav

我建议看一下量角器中的ExpectedConditions。它们在这种情况下很有帮助。如果您查看示例,这可能会帮助您找到问题的替代解决方案。我目前正在使用这种模式重写许多测试,因为在我们的CI构建服务器上经常出现间歇性的测试失败。