【问题标题】:Selenium Standalone with CORS带 CORS 的 Selenium Standalone
【发布时间】:2015-04-05 12:21:20
【问题描述】:

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

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

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

我很乐意提供更多信息,如果这有助于产生答案。

【问题讨论】:

    标签: node.js selenium cors webdriver-io


    【解决方案1】:

    首先,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();
    
    });
    

    【讨论】:

    • 当你说偏好而不是能力时,我会在哪里设置?
    • 其实它是一种能力,只是有特定的名称。如果您使用的是 wedbriverio,我建议您为此目的使用github.com/saadtazi/firefox-profile-js(将更新如何 - 在答案中)。我不记得它是如何调用 ff 的,应该查看 selenium 网站,例如对于 Chrome,它是“首选项”对象数组 :)
    • 明天会检查并提供答案,如果它修复它,感谢您抽出时间回答
    • 告诉它是否有帮助,周二我可以在另一个笔记本上查看我的代码(我在那里使用 webdriver.io),然后在这里用更好的例子告诉你:)
    • 现在似乎可以工作了,我得到了正确的 401 响应,而不是 CORS 错误。
    猜你喜欢
    • 2019-06-27
    • 1970-01-01
    • 1970-01-01
    • 2016-01-19
    • 2022-12-04
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多