node.js - 带有 CORS 的独立 Selenium

标签 node.js selenium cors webdriver-io

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

服务器配置为返回正确的 CORS header ,并且 XHR 对象配置为允许 CORS。我知道这些工作是因为当我通过 firefox/chrome 手动使用该网站时它会按预期工作,但是当我测试时它似乎会崩溃,这让我感到困惑,因为服务器和客户端都配置为 CORS,并且没有目前测试涉及HTTPS。

那么为了让 CORS 在测试浏览器中工作,我需要做什么特别的事情吗?我知道 Selenium 在自己的配置文件中启动浏览器,但我在浏览器设置的配置中找不到与 cors 相关的任何详细信息,也找不到与 CORS 实现相关的任何相关功能。

如果有助于得出答案,我很乐意提供更多信息。

最佳答案

首先,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://stackoverflow.com/')
        .end();

});

关于node.js - 带有 CORS 的独立 Selenium,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29457206/

相关文章:

javascript - Python 网络抓取 - 从哪里开始

asp.net-web-api - 使用 xUnit 和 .Net Core MVC Controller 为 CORS 创建单元测试

.net - ASP.NET WebApi - 为多个来源启用 CORS

node.js - Sails 服务器启动时出错

java - RC4 实现之间的差异

java - 无法使用相对 xpath 找到元素

javascript - 即使存在 CORS header ,AJAX 请求也会失败

node.js - 如何在 NestJs 中使用 Fastify 忽略特定的路由日志记录?

javascript - 在 Node.js Mongoose 中,我想更新每个字段……我该怎么做?

python - 无法使用 Selenium 在 Python 中的关闭窗口中找到元素