Selenium 中的 Headless Chrome 检索空页面(尽管没有 headless 标志也能工作)
Headless Chrome in Selenium retrieves empty page (works without headless flag though)
我正在尝试在无头模式下使用 Chrome 获取页面内容,但某些页面 return 仅为空 HTML。我的设置:
- Java 8
- 硒版本 3.14.0
- Selenium Chrome 驱动程序版本 3.141.59
- 测试 Windows 10
代码:
ChromeOptions options = new ChromeOptions();
options.setHeadless(true);
RemoteWebDriver driver = new ChromeDriver(options);
driver.get("https://www.patagonia.com/home/");
System.out.println("Title: " + driver.getTitle()); // prints out "Title: "
当我不使用无头模式时它工作。
如果我在 headless 模式下使用 Firefox,它也有效。
是否有我可能遗漏的设置,或者为什么它在无头模式下不起作用?
感谢您的帮助。
网页显然通过用户代理检测到 运行 Chrome Headless(这与 运行 headless 不同,字面上会包含 HeadlessChrome
)。简单的解决方案:在 ChromeOptions
中指定一个 Chrome 非无头用户代理,例如
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
以下是如何通过 ChromeOptions
指定它:
ChromeOptions options = new ChromeOptions()
.addArguments("--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36")
.setHeadless(true);
我 运行 遇到了与 .NET 完全相同的问题,这是因为我在 IIS 中使用了本地不安全的证书。
为了解决这个问题,我添加了以下内容...
ChromeOptions options = new ChromeOptions();
ChromeOptions.AcceptInsecureCertificates = true;
差不多,它告诉 Chrome 驱动程序选项在检测到不安全证书时不要停止浏览器执行,并照常进行。
我还发现在关闭无头选项的情况下 运行遇到 运行 Chrome 的问题时它很有帮助,可以查看浏览器实际在做什么。
我正在尝试在无头模式下使用 Chrome 获取页面内容,但某些页面 return 仅为空 HTML。我的设置:
- Java 8
- 硒版本 3.14.0
- Selenium Chrome 驱动程序版本 3.141.59
- 测试 Windows 10
代码:
ChromeOptions options = new ChromeOptions();
options.setHeadless(true);
RemoteWebDriver driver = new ChromeDriver(options);
driver.get("https://www.patagonia.com/home/");
System.out.println("Title: " + driver.getTitle()); // prints out "Title: "
当我不使用无头模式时它工作。
如果我在 headless 模式下使用 Firefox,它也有效。
是否有我可能遗漏的设置,或者为什么它在无头模式下不起作用?
感谢您的帮助。
网页显然通过用户代理检测到 运行 Chrome Headless(这与 运行 headless 不同,字面上会包含 HeadlessChrome
)。简单的解决方案:在 ChromeOptions
中指定一个 Chrome 非无头用户代理,例如
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
以下是如何通过 ChromeOptions
指定它:
ChromeOptions options = new ChromeOptions()
.addArguments("--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36")
.setHeadless(true);
我 运行 遇到了与 .NET 完全相同的问题,这是因为我在 IIS 中使用了本地不安全的证书。
为了解决这个问题,我添加了以下内容...
ChromeOptions options = new ChromeOptions();
ChromeOptions.AcceptInsecureCertificates = true;
差不多,它告诉 Chrome 驱动程序选项在检测到不安全证书时不要停止浏览器执行,并照常进行。
我还发现在关闭无头选项的情况下 运行遇到 运行 Chrome 的问题时它很有帮助,可以查看浏览器实际在做什么。