我有一个 selenium 测试,它通过 selenium-grid 上可用的浏览器实例测试站点的登录。这在使用 firefox 浏览器实例时可以正常工作,但在使用 safari 时,测试无法通过整个测试,因为 safari 会弹出一个窗口,其中包含“您希望我保存此密码”的问题。
它似乎既不显示为 window_handle 也不显示为警报。我怎样才能让 selenium 关闭这个 Safari 弹出窗口并继续测试?
你不能。WebDriver 无法与浏览器和/或操作系统特定的对话框交互。
你可能有两个选择:
通过您的编程语言按Enter或编程。Esc您没有指定您使用的是哪一个,所以这里有一个 Java 示例:
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_ESCAPE);
robot.keyRelease(KeyEvent.VK_ESCAPE);
这是一个 hack,但它是可靠的,这是我为克服类似问题而一直在做的事情。
试试这段代码,它使用 JavaScript 将密码更改为文本,这会停止弹出窗口:
driver.executeScript("Array.prototype.slice.call(document.getElementsByTagName('input')).forEach(function(e){e.type=e.type=='password'?'text':e.type;});");
或者,您可以选择性地禁用特定域的密码捕获。您还可以通过清除用户名/密码的自动填充选项来完全禁用密码捕获。