使用 Selenium 等待 JavaScript 事件
Waiting for JavaScript event with Selenium
我正在 Selenium (Node.js) 之上构建一个由多个步骤组成的自动化框架。
每一步都在前一步之后,完成后返回一个承诺(就像 Selenium 的 driver.click() 等返回的承诺)。
是否可以等待 JavaScript 事件在浏览器上触发?如果是这样,遵循的模式是什么?
使用.executeAsyncScript
等待事件发生:
driver.executeAsyncScript(function(callback) {
window.addEventListener('message', function onmessage() {
window.removeEventListener('message', onmessage);
callback();
});
});
文档:
我正在 Selenium (Node.js) 之上构建一个由多个步骤组成的自动化框架。 每一步都在前一步之后,完成后返回一个承诺(就像 Selenium 的 driver.click() 等返回的承诺)。 是否可以等待 JavaScript 事件在浏览器上触发?如果是这样,遵循的模式是什么?
使用.executeAsyncScript
等待事件发生:
driver.executeAsyncScript(function(callback) {
window.addEventListener('message', function onmessage() {
window.removeEventListener('message', onmessage);
callback();
});
});
文档: