selenium - Chrome 无头测试
问题描述
我想使用 chromedriver headless 而不是 phantomjs。对于 phantomjs ,我能够提供 ssl 证书和密钥路径作为命令行参数。如下。如何提供证书和密钥路径作为无头 chromedriver 的命令行参数?
ImmutableMap<String, String> commandLineArguments = ImmutableMap.<String, String>builder()
.put("ssl-protocol", "any")
.put("ssl-client-certificate-file", certificatePath)
.put("ssl-client-key-file", certificateKeyPath)
.put("ssl-client-key-passphrase", "webpass").build();
String[] params = commandLineArguments.entrySet().stream()
.map(e -> String.format("--%s=%s", e.getKey(), e.getValue()))
.collect(Collectors.toList())
.toArray(new String[0]);
cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
cap.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, params);
解决方案
WebDriver driver;
case WebDriverType.CHROME:
WebDriverManager.chromedriver().setup();
ChromeOptions cOptions = new ChromeOptions();
cOptions.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
cOptions.setAcceptInsecureCerts(true);
// this isthe option to run chrome in headless mode
cOptions.setHeadless(true);
cOptions.addArguments("--ignore-certificate-errors");
cOptions.addArguments("disable-infobars");
driver = new ChromeDriver(cOptions);
break;
您也可以通过这种方式以无头模式运行 chrome。
推荐阅读
- python - Python上的矩阵和索引
- javascript - 如果 babel 将 let 和 const 转换为 var,有什么区别?
- wkwebview - SFSafariViewController 中的 shouldStartLoadWithRequest 等价物是什么?
- java - 使用 JCalendar 在特定日期的背景颜色
- c# - 启动多个进程并等待它们完成
- azure-service-fabric - 本地缓存的 stateManager ... Service Fabric 中的任何风险?
- jquery - 在 MVC 项目中,为什么 jQuery print() 函数无法加载 css
- ada - 通过字符串调用函数
- url-parameters - Facebook 的 fbclid 参数阻止了我网站上的 adsense 广告。我怎样才能消除这个?
- html - SelectionChange mat-select Angular 上的偏移量