当前位置: 首页 > 知识库问答 >
问题:

硒JavaSafari-切换到新标签不工作

笪昌翰
2023-03-14

我有下一种情况:

我在MacOS中运行自动化,在Safari中运行Selenium。我想控制打开的新选项卡(切换到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();

正如我之前所说的:它在火狐、Chrome、IE11中工作,但在Safari12.0.3中,这是当我在标签上手动单击时的消息。

"这个Safari窗口由自动测试远程控制."

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

"关闭所有自动化"、"停止会话"、"继续会话"

有人能帮我吗?

PS:开发--

共有1个答案

劳嘉实
2023-03-14

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

Thread.sleep

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

 类似资料:
  • 本文向大家介绍如何切换到硒框架?,包括了如何切换到硒框架?的使用技巧和注意事项,需要的朋友参考一下 我们可以借助以下方法切换到Selenium中的帧- switchTo()defaultContent() 此方法用于在帧和父帧之间来回切换。焦点转移到主页上。 switchTo()。parentFrame() 此方法用于将控件切换到当前帧的父帧。 示例

  • 这是我写的代码,以打开一个新标签在已经打开Chrome但它是重定向到第二个url在现有的标签只有。 我想打开一个新选项卡并加载“www.mailinator.com”的url 有人能帮我吗?

  • 我尝试用html、css、JavaScript制作切换标签。 这是我的代码,我试过了。 null null 但我想用仅有的HTML和CSS来制作这个函数。所以我就这样试着。但它不起作用。 null null 请帮帮我.提前谢谢你。

  • 我对python和Splint是新手。我阅读了关于splinter的文档,但它没有提到selenium库中关于switch_to like的任何内容。 当我运行这段代码时,我得到一个错误。 任何想法都欢迎。谢了!

  • 每当我在eclipse上切换工作区时,我都会得到错误: 期间发生内部错误:“正在初始化 Java 工具”。重复的字段名称 如果我重启Eclipse,它就会正确地加载新的工作区。你知道我该怎么解决这个问题吗? 我在视窗 7 上使用日食开普勒

  • 问题内容: 我已经开发了这段代码,用于将所有搜索结果打开到新标签中: 我想要的是当我打开所有带有搜索结果的选项卡时,我想在所有选项卡之间切换并延迟2秒。 我该如何实施? 问题答案: 试试这个代码,