为使用selenium构建chrome和chromedriver
项目描述
HitchChrome
如果您使用Python与selenium配合超过了一小部分,您可能遇到了以下三者之一与其他之一或多个不兼容的问题
- 浏览器版本。
- WebDriver版本。
- Selenium版本。
此包是将这三个一起安装的方法,以避免首次设置Selenium时出现此问题,并防止这种情况,这种情况已经发生在我身上
- 您明天有一个大发布计划。
- 您的操作系统或docker容器中以某种方式升级了Google chrome/chromium。
- 由于新版本的浏览器不兼容,您的回归测试套件失败了。
- 您整夜都在试图修复它。
HitchChrome是hitchdev框架的一部分。
请注意,此包仅适用于测试。浏览器不会接收安全更新,如果用于浏览公开网络,则可能存在潜在的安全风险。
如何使用?
首先,构建到您选择的目录中
from hitchchrome import ChromeBuild
chrome_build = ChromeBuild("./chrome84", "84")
chrome_build.ensure_built()
然后使用,可以是图形界面
driver = chrome_build.webdriver()
driver.get("http://www.google.com")
driver.quit()
或无头
driver = chrome_build.webdriver(headless=True)
driver.get("http://www.google.com")
driver.quit()
您还可以添加chrome选项参数,如下所示
driver = chrome_build.webdriver(
headless=True,
arguments=[
"--window-size=1024,768",
"--disable-dev-shm-usage",
"--no-sandbox",
]
)
或者,您可以抓取二进制位置以在其他地方使用
print(chrome_build.chrome_bin)
print(chrome_build.chromedriver_bin)
包状态
- 适用于chrome版本80 - 84。
为什么不使用X?
- 容器化Docker。要么您以无头模式运行浏览器,否则您可能需要花费比构建这个包更多的时间来尝试让它工作。但话又说回来,您可能可以在Docker中运行这个包(但请参见以下注意事项)。
- pyderman - 仅下载chromedriver。除非三个版本都得到控制并保持同步(浏览器、驱动程序、Selenium),否则最终可能会出现不同步的情况。
- chromedriver-binary -- 同样。此外,当您的操作系统升级chrome或chromium或您想升级Selenium时,您必须手动在requirements.txt中更新它。我在决定编写这个包时使用了它。
注意事项
- 需要安装aria2(用于下载)。您需要执行“apt-get install aria2”或“brew install aria2”或等效命令。
- 请勿将此包用于常规浏览和/或爬取。它修复的chromium版本不接收安全更新。如果您因为此包被黑客攻击,那是由您负责的。此包不提供任何保修,明示或暗示。请自行承担全部风险。建议仅用于测试您自己的代码。
- 此包修复了setup.py中的Selenium版本。这是有意为之,以确保使用的版本已经与下载的chromium/chromedriver版本进行了测试。如果您有一个较晚的Selenium版本在requirements文件中或作为其他包的依赖项,它可能会与这个版本冲突。
Docker注意事项
- ensure_built()将在第一次运行时下载和安装chromium + 驱动程序,并在后续运行时使用它。如果您在Docker容器中运行此程序,除非您在构建步骤中运行它,否则它将尝试在每次运行时下载chrome(约150MB)。这会工作,但会很快变得令人烦恼。
- 如果您使用此包在Docker容器中以无头模式运行,用户不得是root用户(即默认用户)。Chrome将拒绝运行。
项目详情
关闭
hitchchrome-85.0.tar.gz的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 876469aa81a11e5428b64ddeb7b91ed7573a4537d952c95f4942c19fb011fbcd |
|
MD5 | 11c550c1c1fe628bc8c9e9cd886a073a |
|
BLAKE2b-256 | 05f8ffba0cdd5ffe8d55a703ca5a9a72fe3d74bf68b5a23d4924dd56d10c3fde |