我在 Selenium 框架中为我的 Web 应用程序编写了简单的测试,它在 Chrome 和 Edge 上运行得很好。
但只有在 Firefox 中,异步脚本才会超时,可能是 Firefox 本身的安全设置问题,我在 about:config 中找不到任何相关设置。
我也已经安装了最新的 geckodriver 版本。
从您在回复我的评论时提供的代码来看,我相信您的问题可能与您如何从执行的脚本返回 Promise 有关。
您当前的代码:
async function waitForTilesLoaded(driver) {
await driver.executeScript(() => {
return new Promise((resolve, reject) => {
google.maps.event.addListenerOnce(map, 'tilesloaded', function () {
resolve(true);
});
});
});
}
我建议您尝试使用executeAsyncScript而不是executeScript。在这里看看如何使用它: https://www.selenium.dev/selenium/docs/api/javascript/WebDriver.html#executeAsyncScript
尝试使用以下内容:
async function waitForTilesLoaded(driver) {
await driver.executeAsyncScript(function() {
var callback = arguments[arguments.length - 1];
google.maps.event.addListenerOnce(map, 'tilesloaded', () => callback());
});
}
请注意,您必须小心函数如何访问此回调。看看他们在文档中为executeAsyncScript 函数提供的示例。