# encoding=utf-8 from selenium import webdriver import unittest import time from PIL import Image class ImageCompare(object): def make_regalur_image(self, img, size=(256, 256)): # 将图片尺寸强制重置为指定的size大小 # 然后再将其转换成RGB值 return img.resize(size).convert('RGB') def split_image(self, img, part_size=(64, 64)): # 将图片按给定大小切分 w, h = img.size pw, ph = part_size assert w % pw == h % ph == 0 return [img.crop((i, j, i+pw, j+ph)).copy()for i in range(0, w, pw) for j in range(0, h, ph)] def hist_similar(self, lh, rh): # 统计切分后每部分图片的相似度频率曲线 assert len(lh) == len(rh) return sum(1-(0 if L == r else float(abs(1-r))/max(L, r))for L, r in zip(lh, rh))/len(lh) def calc_similar(self, li, ri): # 计算两张图片的相似度 return sum(self.hist_similar(l.histogram(), r.histogram()) for l, r in zip(self.split_image(li), self.split_image(ri)))/16.0 def calc_similar_by_path(self, lf, rf): li, ri = self.make_regalur_image(Image.open(lf)), \ self.make_regalur_image(Image.open(rf)) return self.calc_similar(li, ri) class TestDemo(unittest.TestCase): def setUp(self): self.IC = ImageCompare() # 创建存储自定义文件配置文件的路劲变量 propath = "C:\\Users\\ifthink\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\xf1mvsab.default" # 加载自定义配置文件到firefoxprofile实例中 profile = webdriver.FirefoxProfile(propath) # 启动带自定义配置文件的浏览器 self.driver = webdriver.Firefox(executable_path="F:\\Python\\Webdriver\\geckodriver.exe", firefox_profile=profile) def test_imagecomparison(self): url = "http://www.sogou.com" # 访问搜狗首页 self.driver.get(url) time.sleep(3) # 截取第一次访问搜狗首页的图片,并保存本地 self.driver.save_screenshot("F:\\book\\sogou1.png") self.driver.get(url) time.sleep(3) # 截取的二次访问搜狗首页的图片,并保存本地 self.driver.save_screenshot("F:\\book\\sogou2.png") # 打印两张截图比对后的相似度,100表示完全匹配 print(self.IC.calc_similar_by_path('F:\\book\\sogou1.png', 'F:\\book\\sogou2.png')*100) if __name__ == '__main__': unittest.main()
Selenium Python自动化测试学习知识积累-比较截图
最新推荐文章于 2024-05-27 14:54:23 发布