javascript - 有没有办法使用 WebDriver 自动触发 setTimeout 事件?

标签 javascript selenium webdriver chromium

我想对一些具有大量 setTimeout 代码的页面运行测试。一种选择是等待此代码运行,但理想情况下,我希望在页面加载后立即强制代码运行。

我想到的一种方法是在评估页面之前将如下所示的 JavaScript 注入(inject)到页面中:

var originalSetTimeout = window.setTimeout;
window.setTimeout = function(a, t) {
    originalSetTimeout(a, 0);
}

我不确定如何做到这一点,或者是否有我忽略的更好方法。

请注意,此处无法删除我正在测试的页面上的 setTimeout 代码。

最佳答案

当你做

driver.get('http://mypage.com')

WebDriver 将等待页面加载。一旦完成,你就可以做

driver.execute_script('var originalSetTimeout = window.setTimeout;
                      window.setTimeout = function(a, t) {
                         originalSetTimeout(a, 0);
                      }')

它可能会做你想要的事情,并且应该尽快运行。

关于javascript - 有没有办法使用 WebDriver 自动触发 setTimeout 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14469441/

相关文章:

javascript - 如果输入类型文件不是图像,则使用 jquery 脚本显示警报

javascript - JavaScript 中检查字符串是否仅包含空格的最快方法是什么?

xml - 如何使用 Selenium IDE 验证 XML 页面上的文本?

javascript - 为什么有些脚本会混淆元素名称? (例如 "d\u0069\x76"为 "div")

Javascript 字符串连接问题

java - Selenium:选择不带参数的子元素

google-chrome - Windows 上的 Chrome 和 Firefox 与 Linux 上的 Chrome 和 Firefox (selenium)

angular - 识别基于 Angular 的 WebDriver 网站上的元素

Maven 测试 (webdriver/testng) 在不存在的文件夹中寻找资源。我怎样才能告诉它在哪里寻找它?

java - 如何在桌面浏览器上使用 webdriver 移动网页