所以我正在使用量角器和selenium进行角度2应用程序的e2e,其中我有一个下载按钮,打开两个新选项卡。我的测试是检查是否打开了两个新选项卡,每个选项卡在URL中都有一个特定值。两个标签同时打开。
Then('the title plan opens in a new tab', function (callback: any) {
console.log('inside then');
browser.getAllWindowHandles().then(function (handles) {
const newWindowHandle = handles[1];
console.log(newWindowHandle);
browser.switchTo().window(newWindowHandle).then(function (){
console.log('inside switch');
chai.expect(browser.driver.getCurrentUrl()).to.eventually.have.string('PBL1899_AUTO_TEST_TP').and.notify(callback);
});
});
});
Then('the title sheet opens in a new tab', function (callback: any) {
browser.getAllWindowHandles().then(function (handles) {
const newWindowHandle = handles[2];
browser.switchTo().window(newWindowHandle).then(function (){
console.log('inside switch');
chai.expect(browser.driver.getCurrentUrl()).to.eventually.have.string('PBL1899_AUTO_TEST_TS').and.notify(callback);
});
});
});
第一个'然后'条件工作正常并通过。在第二个'然后'期间,控件正确切换到已加载的另一个选项卡,但它会无限期地等待 browser.driver.getCurrentUrl() 。
如果我反转当时的条件,那么,无论先执行哪个都可以正常工作,但第二个进行无限期等待。这里发生了什么?
有趣的是,在此等待期间,如果按下手动刷新(F5),则等待结束,测试成功完成,否则超时。
我甚至尝试使用代码:
引入auto_refreshbrowser.driver.navigate().refresh()
但是这也没有真正刷新窗口而等待。是否有 browser.driver ?我检查过,似乎所有的browser.driver方法都在等待。
任何帮助?我真的被困在这里。感谢。
编辑: 因此发现只有当标签包含加载速度非常快的内容时才会发生这种情况。在我的情况下,标签只是提供一些简单的HTML而没有任何加载时间,因为这是一个测试。 但是当我在一个SIT服务器上运行时,选项卡正在加载繁重的网页,这工作正常,因为在选项卡切换期间,该特定选项卡仍将加载并且测试将成功完成。