Selenium Standalone 与 CORS

Selenium Standalone with CORS

我目前正在通过 nodejs 和 selenium 独立使用 webdriver io,在我尝试执行基于 CORS 的请求之前一切正常。我目前使用 firefox 作为测试浏览器,由于对另一个域的 CORS 请求,它会抛出错误。

服务器配置为 return CORS 的正确 headers 并且 XHR object 配置为允许 CORS。我知道这些工作是因为当我通过 firefox/chrome 手动使用该站点时它按预期工作,但是当我测试它时它似乎爆炸了,这让我感到困惑,因为服务器和客户端是为 CORS 配置的,并且那里当前测试中没有涉及HTTPS。

那么我需要做些什么才能让 CORS 在测试浏览器中正常工作?我知道 Selenium 在其自己的配置文件中启动浏览器,但我在浏览器设置的配置中找不到与 cors 相关的任何详细信息,也找不到与 CORS 实现相关的任何 dependentFeatures。

如果能帮助得到答案,我很乐意提供更多信息。

首先,CORS 在您的浏览器中运行,但由于 Selenium 的工作方式和您的应用程序逻辑,它们可能会有点冲突。

我建议仅针对 Selenium 关闭 CORS 检查。

对于 Chrome,通过向功能添加 "disable-web-security" 可以轻松关闭 CORS 检查。 对于 Firefox,它将是 "security.fileuri.strict_origin_policy" 首选项(不是功能)。例如使用 https://github.com/saadtazi/firefox-profile-js

var FirefoxProfile = require('firefox-profile'),
    webdriverjs = require('webdriverjs');

var fp = new FirefoxProfile();
fp.setPreference("security.fileuri.strict_origin_policy", false);

fp.encoded(function(prof) {

    var client = webdriverjs.remote({
        desiredCapabilities: {
            browserName: 'firefox',
            firefox_profile: prof
        }
    });

    client
        .init()
        .url('http://whosebug.com/')
        .end();

});