空白页:Python中的Selenium Chrome自动化

时间:2019-09-24 08:28:09

标签: javascript python selenium google-chrome selenium-webdriver

我正在尝试使用Python中的Selenium和chrome浏览器来自动化过程。 我的浏览器适用于大多数页面,但无法渲染包括chrome://version/在内的一些页面。

对于一般自动化(无头),它会正确返回页面和页面源,而对于无头,浏览时它会返回带有页面源的空白页面,如下所示:

<html><head></head><body></body></html>

我已经在其他操作系统(包括OpenSUSE,Fedora和Windows)中尝试了chrome。 我已经尝试过很多事情,例如: 删除所有初始参数, 使用浏览器时应保持畅通无阻。

供参考:  如果我运行此代码

from selenium.webdriver import Chrome
from selenium.webdriver import ChromeOptions
options = ChromeOptions()
# to remove all arguments
options.add_experimental_option( 'excludeSwitches', ['disable-hang-monitor', 'disable-prompt-on-repost', 'disable-background-networking', 'disable-sync', 'disable-translate', 'disable-web-resources', 'disable-client-side-phishing-detection', 'disable-component-update', 'disable-default-apps', 'disable-zero-browsers-open-for-tests', '--enable-automation', '--use-mock-keychain', '--user-data-dir', '--enable-blink-features', '--disable-popup-blocking', '--enable-logging --force-fieldtrials=SiteIsolationExtensions/Control', '--enable-logging', '--force-fieldtrials', '--ignore-certificate-errors', '--load-extension', '--log-level', '--no-first-run','--password-store','--remote-debugging-port','--test-type'
]) 
options.add_argument("--headless")
options.add_argument("--no-sandbox")
browser = Chrome(executable_path=driver_path,options=options)
browser.get("chrome://version")
print(browser.page_source)

它为 headless

返回相同的空白页
<html><head></head><body></body></html>

如果不使用无头选项操作镀铬,它将完全正常工作。

<!doctype html>
<!--
about:version template page
-->
<html id="t" dir="ltr" lang="en">
  <head>
    <meta charset="utf-8">
    <title>About Version</title>
    <link rel="stylesheet" href="chrome://resources/css/text_defaults.css">
    <link rel="stylesheet" href="chrome://version/about_version.css">
......................

2 个答案:

答案 0 :(得分:1)

我猜想硒正在以无头的方式启动浏览器,并且由于它是从本地文件中获取chrome://version,因此它无法呈现。

我认为,如果以无头方式运行,所有chrome://(以及本地文件(如.pdf或类似文件))都会发生相同的情况。

尝试在chrome浏览器中打开一些pdf文件,然后:driver.get(<path_to_pdf>)无头和普通

答案 1 :(得分:0)

尝试以下选项:

options.addArguments("disable-blink-features=AutomationControlled");
options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
options.setExperimentalOption("useAutomationExtension", false);