欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

selenium自动化启用chrome浏览器无头模式headless

程序员文章站 2022-05-27 09:02:18
...

我们做selenium UI自动化测试时,每次都需要启动浏览器、用例运行结束后再关闭浏览器,浏览器启动相当地耗费时间,在本机运行用例的话还得放开双手,可以使用chrome的headless模式,让浏览器在后台运行,不需要加载样式和渲染,也可以让自动化测试更稳定。
先看一下无头浏览器的运行效果

windows命令行模式运行

打开cmd,首先要找到chrome.exe的目录并cd进入

dir c:\chrome.exe /s /b

selenium自动化启用chrome浏览器无头模式headless

运行chrome.exe

chrome.exe --headless --remote-debugging-port=9222 https://www.baidu.com

selenium自动化启用chrome浏览器无头模式headless
这样无头模式的chrome就启动完成了,可以访问端口验证一下
selenium自动化启用chrome浏览器无头模式headless

pytest+selenium启用headless

示例

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# 添加浏览器参数
chrom_options = Options()
chrom_options.add_argument('--headless')
ch_options = Options()
ch_options.add_argument('--headless')
driver = webdriver.Chrome(chrome_options= ch_options)
# 打开百度试一下
driver.get("https://www.baidu.com")
time.sleep(3)
print(driver.title)
driver.quit()

总结:headless模式只需要添加Options即可

配置为命令行参数

在测试脚本里写死参数的话不灵活,可以把headless配置为参数,每次运行测试用例时,通过参数决定是否需要启动headless模式

配置参数

def pytest_addoption(parser):
    """定义命令行参数"""
    parser.addoption(
        "--headless", action = "store",
        default = "no", help = "set headless option yes or no"
    )

获取参数

headless = request.config.getoption("--headless")

selenium自动化启用chrome浏览器无头模式headless
运行pytest命令时即可通过–headless参数控制是否启用无头模式

> pytest --headless=yes

在Linux上运行设置为默认开启headless

在本机上运行时,打开浏览器比较方便调试,上传到Linux服务器后则设置为headless模式比较好。
只需要把ch_options.add_argument(’–headless’)的判断条件加上当前系统是否为linux即可
selenium自动化启用chrome浏览器无头模式headless