1

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

它似乎既不显示为 window_handle 也不显示为警报。我怎样才能让 selenium 关闭这个 Safari 弹出窗口并继续测试?

4

3 回答 3

2

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

你可能有两个选择:

  1. 第一次运行测试时手动保存/取消密码,然后每次都重复使用配置文件
  2. 通过您的编程语言按Enter或编程。Esc您没有指定您使用的是哪一个,所以这里有一个 Java 示例:

    Robot robot = new Robot();
    robot.keyPress(KeyEvent.VK_ESCAPE);
    robot.keyRelease(KeyEvent.VK_ESCAPE);
    

    这是一个 hack,但它是可靠的,这是我为克服类似问题而一直在做的事情。

于 2013-07-15T12:47:41.013 回答
1

试试这段代码,它使用 JavaScript 将密码更改为文本,这会停止弹出窗口:

driver.executeScript("Array.prototype.slice.call(document.getElementsByTagName('input')).forEach(function(e){e.type=e.type=='password'?'text':e.type;});"); 
于 2015-03-07T15:04:18.507 回答
0

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

于 2014-02-13T07:09:20.307 回答