Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 我在Mac机器上对safari浏览器执行Selenium测试时遇到了问题_Macos_Selenium_Safaridriver - Fatal编程技术网

Macos 我在Mac机器上对safari浏览器执行Selenium测试时遇到了问题

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);

我们在切换到safari浏览器的新窗口时遇到了问题。下面是我们用来切换窗口的代码

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()关闭所有窗口。没有只关闭一个窗口的选项。可能您可以尝试使用快捷键关闭当前窗口。但我不确定。