Javascript 将焦点更改为另一个未定义名称的窗口
我正在使用node.js的webdriver客户端测试我的应用程序 在我的应用程序中,单击一个按钮后,将打开一个新的浏览器窗口。 显然,由于硒的性质,旧窗口保持活动状态 我尝试使用wd.js中的Javascript 将焦点更改为另一个未定义名称的窗口,javascript,selenium,webdriver,Javascript,Selenium,Webdriver,我正在使用node.js的webdriver客户端测试我的应用程序 在我的应用程序中,单击一个按钮后,将打开一个新的浏览器窗口。 显然,由于硒的性质,旧窗口保持活动状态 我尝试使用wd.js中的window()方法切换到新窗口,但没有设置 有没有办法在不知道名称的情况下在窗口之间切换?我会在java实现中执行以下操作 String parentWindowHandle = browser.getWindowHandle(); // save the current window handle
window()
方法切换到新窗口,但没有设置
有没有办法在不知道名称的情况下在窗口之间切换?我会在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;
}
}
-按名称或句柄将焦点切换到其他浏览器窗口。因此,尝试一下,让社区知道解决方案。祝你好运 foo,我找到了答案 您将希望在此处使用此函数
var handlePromise = driver.getAllWindowHandles();
handlePromise.then(function (handles){
var popUpWindow = handles[1];
driver.switchTo().window(popUpWindow);
})
我使用了它,它适用于所有浏览器:- 请尝试以下代码:-
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]);
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]);
});
对于异步函数,使用wait而不是Promise
如果要使用Promise,请尝试以下代码:-
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]);
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]);
});
希望对您有所帮助……我对您使用的webdriver版本不是特别熟悉,但用于执行类似操作的典型流程是:1-获取窗口名称,仅存储名称;2-执行打开新窗口的操作;3-获取窗口名称;4-切换到与第一个窗口名称不同的窗口;WD.js能做到吗?我也很好奇,我不能给窗口命名,因为我没有使用window.open()。。。我希望能够使用类似“driver.switchTo().window();”的命令切换到新窗口下面的答案是针对java的,而不是javascriptfoo,我已经测试了这个答案,它是有效的,如果它适用于您,请接受
browser.driver.switchTo.window不是一个函数
sorry@chrismillah阅读您的答案。。。不幸的是,我们在短暂的尝试后不得不放弃WebDriver,所以我无法测试您的答案,但非常感谢。是的,但他正在使用JavaScript@LeeGee同意。正如我所提到的,我只是给了他一个关于方法的建议,并把实现留给了他。也许我应该试试WD.js上的POC然后回来。我相信我会很感激的。注意,他的窗口没有标题。假设foo只打开了两个窗口,它应该很简单。