java - Headless Chrome - 获取空白页面源

标签 java selenium selenium-chromedriver

我正在尝试使用 Selenium 网络驱动程序以 headless 模式加载带有 Chrome 浏览器的网站。我在某些特定网站上遇到问题。页面正在加载,在最初的 2-3 秒内它显示一个带有“请启用 javascript...”的页面,3 秒后,页面源变为空白。

我长期使用 Selenium,尤其是 Chrome,我对该平台很熟悉。出于本案例的目的,我在 Mac 操作系统上使用 Chrome 版本 73.0.3683.86 和 ChromeDriver 2.46.628411(根据 Which ChromeDriver version is compatible with which Chrome Browser version? 兼容)。 selenium java 版本是最新的 - 3.141.59

我怀疑 headless Chrome 无法处理特定的内容类型,例如“svg”和任何其他与 GUI 相关的 HTTP 响应。

    ChromeOptions chromeOptions = new ChromeOptions();
    chromeOptions.addArguments("--headless");
    WebDriver driver = new ChromeDriver(chromeOptions);

    driver.get("https://identity.tescobank.com/login");

    Thread.sleep(3000);

    System.out.println(driver.getPageSource());

    driver.quit();

预期结果是页面源与在非 headless 模式下显示的相同。

最佳答案

headless Chrome 应该能够处理普通 Chrome 可以做的一切:

It brings all modern web platform features provided by Chromium and the Blink rendering engine to the command line.

(参见 https://developers.google.com/web/updates/2017/04/headless-chrome)

由于只有银行的登录页面给您带来麻烦,我的猜测是该页面的安全检测到异常并决定不为您服务。

他们可以做到这一点的一种方法是查看包含 HeadlessChrome 的用户代理字符串。

也就是说,除非您正在为银行编写集成测试,否则您的行为至少是可疑的。如果您有正当合法的顾虑,请先与银行核实。否则,他们可能会对您采取行动。屏蔽您的 IP 地址(这可能会影响很多人)或要求警方与您交谈。

关于java - Headless Chrome - 获取空白页面源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55479056/

相关文章:

java - 如何在 java netbeans 中创建新的 ".txt"文件而不覆盖以前保存的文件?

java - 组合框从索引 0 开始填充

java - 如何比较表数据中的值并单击 Selenium

python - 在 selenium python 中通过 href 查找链接

java - 上传图片在服务器上损坏

java - 如何使用 Jenkins 从 Nexus 获取 jar 文件?

java - 无法使用 id 和 rel 属性值定位元素

java - 为什么我不能使用 captureNetworkTraffic ("");与IE

java - Selenium/ChromeDriver - 单击元素的中心

c# - Selenium Chrome 驱动程序(75 及以上)使用 GetLog() 方法访问日志时出现问题