Selenium Python自动化测试学习知识积累-比较截图

# 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()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值