gpt4 book ai didi

javascript - 使用 Protractor 从一个单页 Angular 应用程序导航到另一个 Angular 应用程序会给出 "javascript error: document unloaded while waiting for result"

转载 作者:行者123 更新时间:2023-11-30 00:21:04 28 4
gpt4 key购买 nike

我看过这个:JavascriptError: javascript error: document unloaded while waiting for result

它有点管用,但我一直认为应该有一种方法可以在不让浏览器休眠的情况下执行此操作。

基本上,我们的应用程序由多个连接的单页 Angular 应用程序组成。当我们从登录页面转到用户主页时,我们会触发页面加载。

当使用 Protractor 测试这个流程时(登录主页 --> 在主页上做一些事情),大约 80% 的时间 Angular 会给我:

Failed: javascript error: document unloaded while waiting for result

提交登录信息后立即上线。

我可以通过在登录代码之后立即进入“waitForNewAngularPage”来解决这个问题:

测试:

helper.doSomeDBSetup();
helper.login(userEmail, password);
helper.waitForNewAngularPage("home");

performTestOnThisPage();

等待页面代码:

exports.waitForNewAngularPage = function (page) {
return browser.driver.wait(function () {
return browser.driver.getCurrentUrl().then(function (url) {
return url.indexOf(page) > -1;
});
}, TIMEOUT).then(function() {
// TODO - we shouldn't need to sleep. We need to figure out how to load angular when switching
// between different single page angular apps so that protractor doesn't get confused.
return browser.sleep(1000);
});
};

登录码:

exports.login = function (email, password) {
browser.get(browser.baseUrl + "/login");
exports.waitForNewAngularPage("login");

//login user
element(By.css('[role="email"]')).sendKeys(email);
element(By.css('[role="password"]')).sendKeys(password);
element(By.css('[role="submit"]')).click();
browser.sleep(500); // TODO - this should not require a sleep.
};

有什么方法可以帮助 Protractor 在不同的单页 Angular 应用程序之间转换时不会丢失?

鉴于在两个地方都没有休眠的情况下使用此登录功能时测试不起作用,当我们在应用程序之间切换时, Protractor 似乎在页面转换前后都感到困惑,但我不知道如何解决它或者如果还有其他事情我应该等待。

(我查看了 https://github.com/angular/protractor/issues/2600 和类似的问题并添加尽可能多的 browser.waitForAngular() 没有这些 sleep 就无法解决任何问题。)

最佳答案

看起来没有人真正找到更好的解决方法,所以我只为后代回答。查看关于我们所做的原始问题的评论:Navigating from one single page angular app to another with protractor gives "javascript error: document unloaded while waiting for result"

As unsatisfying as it may be, I'm pretty sure we just went with using the sleeps @MichielThalen (We're now using React with Nightwatch for our front end/integration tests, 2 years saw a lot of changes :P)

关于javascript - 使用 Protractor 从一个单页 Angular 应用程序导航到另一个 Angular 应用程序会给出 "javascript error: document unloaded while waiting for result",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33137038/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com