【发布时间】:2020-02-16 23:17:35
【问题描述】:
this.switchWindowByTitle = async function (title) {
await browser.getAllWindowHandles().then(function (handles) {
handles.forEach(function (handle) {
console.log(handle.toString());
browser.switchTo.window(handle);
if (browser.getTitle() == title) {
return true;
}
});
});
我正在使用 Protractor 与 Chrome 浏览器一起工作,并尝试通过比较标题来关闭窗口弹出窗口。我得到了所有的窗口句柄,但我的代码只检查了列表句柄的第一个值。
谁能帮我解决它? 这是我的问题详细信息。它只是检查第一个值,然后比较标题
失败: 1)比较产品比较产品应该正确显示 信息: 预期“MOBILE”等于“COMPARE PRODUCTS”。 堆: 错误:预期失败 在用户上下文。 (E:\Protractor 工作区\POM_PROTRACTOR\Testcases\TC_04_CompareProducts.spec.js:17:47) 在 C:\Users\tailet\AppData\Roaming\npm\node_modules\protractor\node_modules\jasminewd2\index.js:112:25
【问题讨论】:
-
如果你说 await browser.switchTo.window(handle); ?这有帮助吗?我的预感是你会在切换完成之前获得标题。
-
@JeremyKahan:谢谢,但是切换后我得到了标题,我的问题是这段代码没有遍历句柄中的所有项目,它只是检查第一个值。
-
是的,但“之后”可能并不代表您的想法。当您执行 GetTitle 时,switchTo 可能尚未完成。另一种测试我建议的方法是在 switchTo 上执行 .then 并将 getTitle 放入该函数中。
-
是的,我按照你的建议试过了,还是不行。
-
是的,我也是,对不起。如果您现在摆脱返回并只记录 browser.getTitle(),您会看到所有标题还是只看到一个?
标签: javascript selenium-webdriver protractor