处理来自selenium的自刷新页面

Mat*_*ard 5 javascript java selenium

我已经遇到了一些java selenium-rc测试的间歇性错误,我认为这些测试与具有ajax轮询的页面有关,并且在服务器上达到某些条件时会自动刷新.在这种情况下,我没有办法让selenium等待页面加载,所以我遇到了一堆随机的"无法访问document.body"错误.

那么,有什么方法可以让硒优雅地处理这种情况吗?如果没有,有什么方法可以检测用户是否是页面的javascript中的selenium,并禁用自动刷新?

如果它有帮助,页面中的javascript代码看起来像......

var ajax = new Ajax(url, { 
    update: state,
    method: 'get',
    onComplete: function(message) {
        if (some_condition) {
            window.location.replace(unescape(window.location));
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

Mat*_*ard 1

我的解决方案是通过将其包装在类似以下内容的内容中来禁用 JavaScript 中的刷新...

var isSeleniumActive = parent.seleniumAlert;
if (isSeleniumActive) {
    alert("Selenium");
} else {
    alert("Not selenium");
}
Run Code Online (Sandbox Code Playgroud)

我不确定这里的 seleniumAlert 函数是否可能永远失效,所以请注意,如果您正在这样做,您可能依赖于 selenium 的内部 selenium 实现细节。