Firefox 浏览器阻止执行异步 JavaScript?

问题描述 投票:0回答:1

我在 Selenium 框架中为我的 Web 应用程序编写了简单的测试,它在 Chrome 和 Edge 上运行得很好。

但只有在 Firefox 中,异步脚本才会超时,可能是 Firefox 本身的安全设置问题,我在 about:config 中找不到任何相关设置。

我也已经安装了最新的 geckodriver 版本。

javascript node.js selenium-webdriver testing firefox
1个回答
0
投票

从您在回复我的评论时提供的代码来看,我相信您的问题可能与您如何从执行的脚本返回 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 函数提供的示例。

© www.soinside.com 2019 - 2024. All rights reserved.