让selenium与safari互动”;“存储密码”;弹出窗口?

让selenium与safari互动”;“存储密码”;弹出窗口?,selenium,safari,Selenium,Safari,我有一个selenium测试,它通过selenium网格上可用的浏览器实例测试站点的登录。这在使用firefox浏览器实例时可以正常工作,但在使用safari时,测试无法通过整个测试,因为safari会弹出一个窗口,其中有一个问题:“您希望我保存此密码吗?” 它似乎既不是窗口句柄,也不是警报。如何让selenium关闭此safari弹出窗口并继续测试?您不能。WebDriver无法与浏览器和/或特定于操作系统的对话框交互 您可能有两种选择: 第一次运行测试时手动保存/取消密码,然后 通过编程语言

我有一个selenium测试,它通过selenium网格上可用的浏览器实例测试站点的登录。这在使用firefox浏览器实例时可以正常工作,但在使用safari时,测试无法通过整个测试,因为safari会弹出一个窗口,其中有一个问题:“您希望我保存此密码吗?”


它似乎既不是窗口句柄,也不是警报。如何让selenium关闭此safari弹出窗口并继续测试?

您不能。WebDriver无法与浏览器和/或特定于操作系统的对话框交互

您可能有两种选择:

  • 第一次运行测试时手动保存/取消密码,然后
  • 通过编程语言以编程方式按Enter键或Esc键。您没有指定使用哪一个,因此下面是一个Java示例:

    Robot robot = new Robot();
    robot.keyPress(KeyEvent.VK_ESCAPE);
    robot.keyRelease(KeyEvent.VK_ESCAPE);
    
    这是一个黑客,但它是可靠的,这是我一直在做的,以克服类似的问题


  • 或者,您可以有选择地禁用特定域的密码捕获。您还可以通过清除用户名/密码的自动填充选项来完全禁用密码捕获。

    尝试此代码,它使用JavaScript将密码更改为文本,从而停止弹出窗口:

    driver.executeScript("Array.prototype.slice.call(document.getElementsByTagName('input')).forEach(function(e){e.type=e.type=='password'?'text':e.type;});"); 
    

    使用最新的驱动程序进行测试不起作用,它要求输入任何名为“密码”的输入。这当然有用。你如何在safari中重用配置文件@彼得·简奇ek@Mr.O我不知道了,对不起。这个答案已经有5年了,我希望新司机能自动处理这些问题?无论如何,我研究了一下,不幸的是没有配置文件处理选项(与FirefoxOptions不同,FirefoxOptions可以显式处理配置文件)。对不起,没关系。是的,我在SafariOptions上也查过了。谢谢你的快速回复。