使用Selenium等待JavaScript事件

3
我正在使用Selenium(Node.js)构建一个自动化框架,它由许多步骤组成。 每个步骤都会在上一个步骤完成后返回一个Promise(例如Selenium的driver.click()返回的Promise)。 是否有可能等待浏览器上的JavaScript事件触发?如果可以,应该遵循什么样的模式?

你的意思是使用Selenium等待JavaScript完全执行并返回吗? - Saurabh Gaur
不,我的意思是等待JavaScript事件触发。使用driver.executeScript()等待脚本执行是微不足道的。 - Ricardo Peres
例如,我想注入 window.onmessage = function() { ... 继续使用node.js Promise链 ... }。 - Ricardo Peres
1个回答

4
使用.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

这是一个与Selenium Webdriver相关的IT技术文档。链接提供了一个JavaScript方法,可以在Webdriver中执行异步脚本。请按照链接提供的格式和语法使用该方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接