有没有办法使用 RemoteWebDriver for SauceLabs 禁用 CORS 检查
Posted
技术标签:
【中文标题】有没有办法使用 RemoteWebDriver for SauceLabs 禁用 CORS 检查【英文标题】:Is there way to disable CORS check using RemoteWebDriver for SauceLabs 【发布时间】:2020-03-25 00:50:39 【问题描述】:问题说明了一切,我正在尝试在 SauceLabs 上执行一些硒测试,该测试加载了一个发出跨域请求的网页。我在想有没有办法通过代码以独立于平台的方式禁用 CORS。
【问题讨论】:
在您控制的服务器上?是 - 设置适当的标题。在您无法控制的服务器上?信任会挫败目的。您可以设置一个代理,这样您就不会发出 Ajax 请求,尽管您可能需要玩一些游戏,但它仍然可能无法正常工作。 @DaveNewton 谢谢,周转很快。 ;) 谷歌没有透露太多关于手头的问题 是你控制的服务器吗? 【参考方案1】:使用 ChromeDriver / Chrome 组合禁用 cors 时,请检查您可以使用 --disable-web-security
参数。
在content_switches.cc中定义为:
// Don't enforce the same-origin policy. (Used by people testing their sites.)
const char kDisableWebSecurity[] = "disable-web-security";
代码示例:
窗户:
ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-web-security"); // don't enforce the same-origin policy
options.addArguments("--disable-gpu"); // applicable to windows os only
options.addArguments("--user-data-dir=~/chromeTemp"); // applicable to windows os only
WebDriver driver = new ChromeDriver(options);
driver.get("https://google.com");
OSX:
ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-web-security"); // don't enforce the same-origin policy
options.addArguments("--user-data-dir=/tmp/chrome_dev_test");
WebDriver driver = new ChromeDriver(options);
driver.get("https://google.com");
Linux
ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-web-security"); // don't enforce the same-origin policy
WebDriver driver = new ChromeDriver(options);
driver.get("https://google.com");
注意:如果您需要访问本地文件以进行 AJAX 或 JSON 等开发/测试目的,您可以使用
-–allow-file-access-from-files
标志。
参考文献
Disable same origin policy in Chrome Disable-web-security in Chrome 48+ Run Chrome browser without CORS结尾
您可以在以下位置找到一些相关讨论:
Uncaught DOMException: Blocked a frame with origin “http://localhost:8080” from accessing a cross-origin frame while listing the iframes in page Error: Permission denied to access property “x” due to same/cross origin policy using Selenium?【讨论】:
谢谢,我最终找到了相同的解决方案。 感谢您添加对我帖子的引用 @AlexFilatov 您的帖子对解释主题非常有帮助。感谢您分享宝贵的研究成果。以上是关于有没有办法使用 RemoteWebDriver for SauceLabs 禁用 CORS 检查的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 remotewebdriver 和 gecko 驱动程序创建新的远程会话
Selenium:browsermob 可以在 RemoteWebDriver 上运行吗?
如何使用Selenium RemoteWebDriver删除下载的文件?
Selenium-Grid2 配置RemoteWebDriver