我使用WD.js webdriver客户端来运行node.js来测试我的应用。
在按钮单击后,在我的应用程序中,将打开一个新的浏览器窗口。 显然,由于硒的性质,旧窗户保持活跃。
我已尝试使用wd.js中的window()
方法切换到新窗口,但it needs a window name as a parameter未设置。
有没有办法在不知道名字的情况下在窗户之间切换?
答案 0 :(得分:2)
foo,我找到了答案。
你想在这里使用这个功能
var handlePromise = driver.getAllWindowHandles();
handlePromise.then(function (handles){
var popUpWindow = handles[1];
driver.switchTo().window(popUpWindow);
})
答案 1 :(得分:1)
我用过这个,它适用于所有浏览器: - 试试这个代码: -
var tab_handles =await driver.getAllWindowHandles();
let number_of_tabs = tab_handles.length;
let new_tab_index = number_of_tabs-1;
await driver.switchTo().window(tab_handles[new_tab_index]);
那是使用await而不是Promise来实现异步函数。
如果您想使用Promise,请尝试以下代码: -
driver.getAllWindowHandles().then((tab_handles)=>{
let number_of_tabs = tab_handles.length;
let new_tab_index = number_of_tabs-1;
driver.switchTo().window(tab_handles[new_tab_index]);
});
希望它有所帮助......
答案 2 :(得分:-1)
我会在java实现中执行以下操作,
String parentWindowHandle = browser.getWindowHandle(); // save the current window handle.
WebDriver popup = null;
Iterator<String> windowIterator = browser.getWindowHandles();
while(windowIterator.hasNext()) {
String windowHandle = windowIterator.next();
popup = browser.switchTo().window(windowHandle);
if (popup.getTitle().equals("Google") {
break;
}
}
此处,名称不是强制性的。同样,你可以尝试循环并切换? 有关您的信息,
switchToWindow(name/Handle)
- 按名称或句柄将焦点切换到其他浏览器窗口。所以试试这个,让社区知道解决方案。祝你好运!