javascript - 空白页 : Selenium Chrome automation in Python

标签 javascript python selenium google-chrome selenium-webdriver

我正在尝试在 Python 中使用 selenium 和 chrome 浏览器自动执行一个过程。 我的浏览器对大多数页面都能正常工作,但无法呈现包括 chrome://version/ 在内的少数页面。

对于一般自动化(没有 headless ),它会正确返回页面和页面源,而对于 headless 浏览,它会返回一个空白页面,页面源如下所示

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

我已经在不同的操作系统中尝试过 chrome,包括 OpenSUSE、fedora 和 Windows。 我尝试了很多事情,例如: 删除所有初始参数, 使用 headless 关闭的浏览器。

供引用: 如果我运行这段代码

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>

如果 chrome 在没有 headless 选项的情况下运行,它将完全正常工作。

<!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">
......................

最佳答案

我猜 selenium 正在 headless 启动浏览器,因为它正在获取 chrome://version来自本地文件,它无法呈现它。

我认为所有 chrome:// 都会发生同样的情况(以及 .pdf 等本地文件)如果以 headless 方式运行。

尝试在 chrome 浏览器中打开一些 pdf 文件,然后:driver.get(<path_to_pdf>)既 headless 又正常

关于javascript - 空白页 : Selenium Chrome automation in Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58076086/

相关文章:

python - 如何在某些文本之前将 XPath 写入文本?

javascript - AngularJS:具有不同属性的对象数组中的 ngIf

javascript - 单击按钮时特定表行上的 C# MVC 文本框(禁用)

python - 如何确定最佳顺序以最大化影响

java - Selenium WebDriverWait.until(invisiblityOfAllElements) 在 NoSuchElementException 上返回超时

java - Selenium、Java、if-else 语句无法正常工作、NoSuchElementException

javascript - 使用 Node.js Highcharts 导出图表

javascript - 获取跨度中文本的宽度,文本溢出: ellipsis; at IE11

python 如何有效地将术语组合在一起

python - SQLAlchemy+ Tornado : How to create a scopefunc for SQLAlchemy's ScopedSession?