在使用selenium执行测试用例时,每条用例执行过程中都会打开一个浏览器,如果用例数量过多时,每次运行均需要调用一次浏览器,增加了服务器压力,而无头模式就可以解决这种问题,他可以让运行速度更快,占用的资源也更少,让浏览器偷偷的在后台工作。
无头模式,是webdriver浏览器驱动的一个功能,可以支持不打开浏览器,直接跟网页进行交互,能够模拟真实得到浏览器进行操作。
操作环境
Windows 10
Python 3.1.1
Selenium 4.0.0
Chrome 浏览器
使用方法
from selenium.webdriver.chrome.options import Options
from selenium import webdriver
chrome_options = Options()
chrome_options.add_argument('--headless')
driver = webdriver.Chrome(options=chrome_options)
# 通过driver.get()来打开对应链接
driver.get(url="https://www.baidu.com/")
使用例子
这是一个打开youtube视频,然后截图的例子
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
import time
from PIL import Image
import schedule
def job():
# 创建Chrome浏览器驱动
chrome_options = Options()
chrome_options.add_argument('--headless')
driver = webdriver.Chrome(options=chrome_options)
# 打开视频页面
driver.get("https://www.youtube.com/watch?v=qmRkvKfr")
time.sleep(2)
driver.find_element(by=By.CLASS_NAME,value="ytp-large-play-button").click()
# 等待视频加载完成
time.sleep(5)
# 截图并保存
driver.save_screenshot("screenshot.png")
# 关闭浏览器
driver.quit()
# 打开图片文件
image = Image.open('screenshot.png')
# 定义裁剪的区域,左上角和右下角的坐标
left = 150
top = 90
right = 700
bottom = 400
# 裁剪图片
cropped_image = image.crop((left, top, right, bottom))
# 保存裁剪后的图片
cropped_image.save('cropped_image.png')
print('执行完毕')
schedule.every(60).seconds.do(job) # 每隔10秒执行一次任务
while True:
try:
schedule.run_pending()
time.sleep(1)
except:
print('重新运行')
© 版权声明
THE END
暂无评论内容