5

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

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

4

2 回答 2

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");

It is not advisable but helped me in handling some of the selenium failures.

于 2012-05-22T05:37:24.837 回答
0

这是不可能的。如 Selenium 文档中所述

Selenium 尝试向您隐藏这些对话框(通过替换 window.alert、window.confirm 和 window.prompt),这样它们就不会停止执行您的页面。如果您看到一个警报弹出窗口,可能是因为它在页面加载过程中触发了,这对于我们来说保护页面通常还为时过早。

这是 Selenium RC(因此也是 Selenium IDE)的一个已知限制,也是开发 Selenium 2 (WebDriver) 的原因之一。如果要捕获onloadJS 警报,则需要使用 WebDriver 警报处理

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

于 2012-05-21T11:01:22.807 回答