Macos 我在Mac机器上对safari浏览器执行Selenium测试时遇到了问题
我们在切换到safari浏览器的新窗口时遇到了问题。下面是我们用来切换窗口的代码Macos 我在Mac机器上对safari浏览器执行Selenium测试时遇到了问题,macos,selenium,safaridriver,Macos,Selenium,Safaridriver,我们在切换到safari浏览器的新窗口时遇到了问题。下面是我们用来切换窗口的代码 public void switchToWindow() { Set<String> availableWindows = driver.getWindowHandles(); for (String strWinHandle : availableWindows) { driver.switchTo().window(strWinHandle);
public void switchToWindow() {
Set<String> availableWindows = driver.getWindowHandles();
for (String strWinHandle : availableWindows) {
driver.switchTo().window(strWinHandle);
}
}
public void switchToWindow(){
设置availableWindows=driver.getWindowHandles();
for(字符串strWinHandle:availableWindows){
driver.switchTo()窗口(strWinHandle);
}
}
在AvailableWindow中,它返回所有窗口句柄,但不是切换到新窗口,而是切换到父窗口。
上述代码在所有其他浏览器上都可以正常工作
Selenium版本-3.11.0
Safari版本-11.1.1您可以尝试以下代码
public void switchToWindow() {
String curWinHandle = driver.getWindowHandle();
Set<String> availableWindows = driver.getWindowHandles();
for (String strWinHandle : availableWindows) {
if(!curWinHandle.equals(strWinHandle))
driver.switchTo().window(strWinHandle);
}
}
public void switchToWindow(){
字符串curWinHandle=driver.getWindowHandle();
设置availableWindows=driver.getWindowHandles();
for(字符串strWinHandle:availableWindows){
如果(!curWinHandle.equals(strWinHandle))
driver.switchTo()窗口(strWinHandle);
}
}
您可以使用CurrentHandle,但如何获取CurrentHandle?您可以使用驱动程序的getWindowHandle方法获取当前窗口句柄。getWindowHandle将返回父窗口的窗口句柄。我们在切换到新窗口时遇到问题,请检查我的答案。我们也尝试了上面的代码,切换到新窗口时它可以正常工作,但如果在必须关闭最后一个打开的窗口时失败,它将关闭父窗口。如何仅关闭最后一个打开的窗口?使用上述方法切换到最后一个窗口,然后使用驱动程序。close()driver.close()关闭所有窗口。没有只关闭一个窗口的选项。可能您可以尝试使用快捷键关闭当前窗口。但我不确定。