在selenium中处理javascript警报

时间:2012-05-21 09:43:54

标签: selenium

如何处理selenium中的onload javascript警报?

它没有被Selenium IDE捕获,也没有被getAlert()函数处理。

2 个答案:

答案 0 :(得分:5)

即使我遇到同样的问题。在使用selenium几个小时后,找到了处理java脚本警报和弹出窗口的解决方案。

我们可以使用selenium的keyPressNative来处理来自selenium RC的java脚本警报。

以下是必须使用key*Native()方法的方法:

    selenium.keyPressNative("27"); // Escape
    selenium.keyPressNative("10"); // Enter    
    selenium.keyDownNative("16"); // Press and do not relase the shift key, so that
    selenium.keyPressNative("79"); // this character will be capitals
    selenium.keyUpNative("16"); // Release the shift key, as we don't need it for the 
    selenium.keyPressNative("67");

这是不可取的,但帮助我处理了一些硒失败。

答案 1 :(得分:0)

无法做到。 As stated in Selenium documentation

  

Selenium试图隐藏你的那些对话(通过替换   window.alert,window.confirm和window.prompt)所以他们不会停止   执行您的页面。如果你看到一个警告弹出窗口,那就是   可能是因为它在页面加载过程中被触发,这是   通常为时太早,我们无法保护页面。

这是Selenium RC的一个已知限制(因此也是Selenium IDE),也是Selenium 2(WebDriver)开发的原因之一。如果您想抓住onload JS提醒,则需要to use WebDriver alert handling

作为解决方法,您可以使用Robot填写任何文本,然后按Enter键并盲目确认对话框。这不是最干净的方式,但它可以工作。但是,您将无法收到alert消息。