用seleniumWire截取网络请求(request),遍历请求url,获取所要对比图片的二进制数据,与本地保持的图片 进行二进制内容对比
from seleniumwire import webdriver
# driverの作成 ChromeDriverManager().install()
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
#右键点击图片,在新的页面打开,可以在地址栏查看到图片地址和图片名称,当前图片名称为:PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png
#利用selenium-wire的功能,将接口返回的内容放进itemlist中,遍历url,查找接口中包含图片名称url(如找不到,则报错),
results = [item for item in driver.requests
if 'PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png' in item.url]
if len(results) == 0:
raise Exception('没有找到百度图片!')
#打开本地已下载的「baidu.png」图片、判断是否与页面请求中的图片二进制数据是否一致
#前提是本地指定文件目录中是否存在对比图片
#如果不用rb(二进制读取),而是用r(字符读取)可能会对比失败
def test_1():
with open(r'./baidu.png', 'rb') as localFile:
assert results[0].response.body == localFile.read()
网页图片和本地二进制对比成功.png
网友评论