首页 > 解决方案 > Safari 中的 Selenium Java - 切换到新选项卡不起作用

问题描述

我有下一个情况:

我在 Safari 中使用 Selenium 在 MacOS 中运行自动化。我想控制打开的新标签(切换到 Safari 中的新标签)

我可以用 Chrome 和 Firefox 做到这一点,但在 Safari 中不起作用。

下一个代码是我正在使用的:

    //Store the parent window
    String parentWindow = driver.getWindowHandle();

    //Open a new Windows(Mailtrap)
    String a = "window.open('https://mailtrap.io/signin','_blank');";
    ((JavascriptExecutor)driver).executeScript(a);


    //Take control over new browser
    for(String handle: driver.getWindowHandles()){
        driver.switchTo().window(handle);
    }

    //Make the same actions over new window
    driver.manage().window().maximize();

    driver.switchTo().defaultContent();

在那之后...

//关闭窗口并返回父窗口

    driver.close();
    driver.switchTo().window(parentWindow);
    driver.switchTo().defaultContent();

正如我之前所说:它适用于 Firefox、Chrome、IE11,但在 Safari 12.0.3 中,这是我手动单击选项卡时的消息。

“这个 Safari 窗口是由自动化测试远程控制的。”

要与此 Safari 窗口交互,您需要停止当前的自动化测试会话。您不应将此窗口用于正常的网页浏览。

“关闭所有自动化”,“停止会话”,“继续会话”

有人可以帮我吗?

PS:开发->允许远程自动化被选中。

标签: javamacosselenium-webdriversafari

解决方案


由于 Safari 的自动化速度非常快,唯一的解决方案是“永远的老朋友”:

Thread.sleep

这是唯一的解决方案,因为隐式和显式等待不起作用。


推荐阅读