【问题标题】:Waiting for JavaScript event with Selenium使用 Selenium 等待 JavaScript 事件
【发布时间】:2016-10-10 00:26:45
【问题描述】:

我正在 Selenium (Node.js) 之上构建一个自动化框架,其中包含多个步骤。 每一步都遵循上一步,完成后返回一个承诺(如 Selenium 的 driver.click() 返回的承诺等)。 是否可以等待 JavaScript 事件在浏览器上触发?如果是,应该遵循什么模式?

【问题讨论】:

  • 您的意思是等到您的 java 脚本完全执行并使用 selenium 返回?
  • 不,我的意思是我说的:等待 JavaScript 事件触发。使用 driver.executeScript() 等待脚本执行很简单。
  • 比如我想注入window.onmessage = function() { ...继续node.js的promise链... }

标签: node.js selenium selenium-webdriver automation browser-automation


【解决方案1】:

使用.executeAsyncScript 等待事件发生:

driver.executeAsyncScript(function(callback) {
  window.addEventListener('message', function onmessage() {
    window.removeEventListener('message', onmessage);
    callback();
  });
});

文档:

http://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebDriver.html#executeAsyncScript

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多