【发布时间】:2015-12-27 20:31:57
【问题描述】:
我正在尝试切换到另一个选项卡并使用该新选项卡上的控件,但出现此错误:
UnknownError:条目中的空值:name=null
这是测试(重要部分):
element(by.repeater("project in projects").row(1).column("{{project.name}}")).click().then(function(){
flow.timeout(5000);
$('.project-data a').click().then(function () {
browser.getAllWindowHandles().then(function (handles) {
flow.timeout(5000);
browser.switchTo().window(handles[1]).then(function () {
browser.sleep(5000);
browser.ignoreSynchronization = true;
});
测试中还有其他部分,但不相关,因为我在这部分中遇到错误。 流程是这样的: 单击链接后,选项卡打开,似乎切换到新选项卡 - 然后失败并关闭窗口。
【问题讨论】:
-
如果我错了,请纠正我,但不是 browser.getAllWindowHandles() 获取打开的浏览器的所有 WINDOWS 吗?你说它切换到选项卡并失败并关闭,在我看来链接只是打开一个选项卡并切换焦点,而你没有成功切换到该选项卡。
-
我也想知道,但 Windows 和 Tabs 的切换方式似乎相同..
-
您可以打印
browser.getAllWindowHandles()并查看您获得的值吗?如果你得到 2 那么你所做的就是有效的,如果不是,那么你不应该切换窗口。当您在同一页面中切换选项卡时,我认为不需要窗口句柄。 -
我以此为参考:stackoverflow.com/questions/26798020/…。无论如何-如果不通过 browser.getAllWindowHandles(),您知道如何在选项卡之间切换吗?我试过打印“getAllWindoHandles()”并得到一个长对象。
-
很抱歉造成的混乱,我问你是否可以打印'getAllWindowHandles()'结果。即
handles.length值。但是,如果单击时在您的浏览器中打开了一个新选项卡,那么上述方法应该可以帮助您。还要检查你的代码执行时是否真的打开了一个新的浏览器选项卡。
标签: javascript selenium selenium-webdriver protractor angularjs-e2e