Python Headless Chrome(无头谷歌浏览器)

1、什么是Headless Chrome

在我们使用Selenium驱动ChromeDriver时,可以弹出谷歌浏览器,模拟人为操作谷歌浏览器,这就是自动化测试。虽然很厉害,但是也有一个很现实的问题,因为是要真实加载完整网页,导致效率低。在自动化测试时,我们其实只需要知道是测试完成还是未完成,至于能否看到完整的UI对我们来说是不重要的,那Headless Chrome就是谷歌为此类需求定制的无UI浏览器,因为 UI 需要 CPU 和 RAM 开销,所以Headless Chrome会快很多。

先说下演示环境:

OS:Mac

Python:3.11.1

Chrome:111.0.5563.110

Selenium:4.8.3

2、不使用Headless Chrome

使用的功能:

  • webdriver.Chrome():返回一个 Chrome 驱动程序的实例,我们将通过它与 Chrome 浏览器进行交互。 
  • driver.get(url):向浏览器发送信号以获取指定的URL。 
  • driver.close():向浏览器发送信号以关闭自身。 
  • time.sleep(n):其中 n 是一个整数。将在指定的秒数内暂停脚本执行。我们需要它给我们时间来查看浏览器是否确实在运行。
import time

from selenium import webdriver

# 初始化浏览器
driver = webdriver.Chrome()

# 访问网页
driver.get('https://www.baidu.com')

# 睡眠5秒
time.sleep(5)

# 关闭浏览器
driver.close()

效果:

3、驱动Headless Chrome

在这里,我们将使用无头自动化浏览器,因为我们将使用此功能:

  • webdriver.Chrome():返回一个 Chrome 驱动程序的实例,我们将通过它与 Chrome 浏览器进行交互。
  • Options():通过这个类的属性我们可以发送浏览器启动参数。在我们的例子中,它是options.add_argument("--headless")它将启动没有 UI(无头)的浏览器。
  • driver.get(url):向浏览器发送信号以获取指定的URL。
  • print(driver.title):将网页标题打印到我们运行脚本的终端中。 
  • driver.close():向浏览器发送信号以关闭自身。 
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# 配置选项
options = Options()

# 设置使用无头浏览器
options.add_argument("--headless")

# 初始化浏览器
driver = webdriver.Chrome(options=options)

# 访问网页
driver.get('https://www.baidu.com')

# 打印标题
print(driver.title)

# 关闭浏览器
driver.close()

4、选项

在需要频繁更新URL的脚步中,可以配置不加载图片等,可以加快速度

from selenium.webdriver.chrome.options import Options

# 配置选项
options = Options()

# 设置使用无头浏览器
options.add_argument("--headless=new")
# 禁用gpu加速
options.add_argument("--disable-gpu")
# 禁止浏览器被监控提示
options.add_experimental_option("excludeSwitches", ["enable-automation"])
# 不自动关闭浏览器
options.add_experimental_option('detach', True)
# 设置请求头user-agent
options.add_argument("--user-agent=''")
# 设置窗口最大化
options.add_argument('--start-maximized')
# 设置窗口大小
options.add_argument('--window-size=200,200')
# 无痕模式
options.add_argument('--incognito')
# 隐藏滚动条
options.add_argument('--hide-scrollbars')
# 禁用js
options.add_argument('--disable-javascript')
# 不加载图片(拦截图片)
options.add_argument('--blink-settings=imagesEnabled=false')

 所有选项可以看这里:

https://peter.sh/experiments/chromium-command-line-switches/

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在 Linux 上清理谷歌浏览器缓存,可以使用类似于以下的代码: ```python from selenium.webdriver.chrome.options import Options from selenium import webdriver options = Options() options.add_argument("--disable-extensions") options.add_argument("--disable-gpu") options.add_argument("--headless") options.add_argument("--no-sandbox") options.add_argument("--disable-dev-shm-usage") options.add_argument("--disable-browser-side-navigation") options.add_argument("--disable-infobars") options.add_argument("--ignore-certificate-errors") options.add_argument("--disable-popup-blocking") options.add_argument("--remote-debugging-port=9222") options.add_argument("--user-data-dir=/path/to/user/data/dir") prefs = {"profile.managed_default_content_settings.images": 2} options.add_experimental_option("prefs", prefs) driver = webdriver.Chrome(options=options) # 清理浏览器缓存 driver.delete_all_cookies() driver.execute_script("window.open('chrome://settings/clearBrowserData');") driver.switch_to.window(driver.window_handles[-1]) driver.find_element_by_css_selector('* /deep/ #clearBrowsingDataConfirm').click() driver.switch_to.window(driver.window_handles[0]) driver.quit() ``` 这里的关键是使用 `--remote-debugging-port` 参数和 `--user-data-dir` 参数指定一个用户数据目录,然后使用 Selenium 连接到 Chrome 远程调试端口进行清理缓存操作。 需要注意的是,Linux 上可能需要安装 Chrome 或者 Chromium,以及对应的驱动程序。同时,也可以根据需要修改其他的设置和选项。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈行动派

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值