我目前正在通过带有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/