利用Applitools Eyes识别视觉bug

简介: Appilitools eyes是一款检测不同次运行页面是否相同的软件。同样运行一个测试程序,可能呈现出来的结果不同。不同的结果可能是bug,也可能是每次展现给用户的结果不同,比如百度搜索,淘宝页面,这里以百度搜索作为案例

Appilitools eyes是一款检测不同次运行页面是否相同的软件。同样运行一个测试程序,可能呈现出来的结果不同。不同的结果可能是bug,也可能是每次展现给用户的结果不同,比如百度搜索,淘宝页面,这里以百度搜索作为案例。

1,要使用Appilitools eyes,首先需要到Appilitools官网https://applitools.com/上注册账号(可以使用github的账号),注册完毕,它会给你一个密钥。

2,在本机上运行

pip3 install eyes-selenium

3,建立测试程序

#!/usr/bin/env python
# coding:utf-8
import unittest
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from applitools.selenium import Eyes,Target
from selenium.webdriver.common.by import By
class checkEyes(unittest.TestCase):
    def test_baidu(self):
        driverPath= "C:\\Lib\\chromedriver.exe"
        service= Service(executable_path=driverPath)
        options= webdriver.ChromeOptions()
        options.add_argument("user-data-dir=C:\\Lib\\ChromeProfile")
        self.driver= webdriver.Chrome(service=service, options=options)
        eyes= Eyes()
        eyes.api_key="你的applitools密钥"
        self.driver= webdriver.Chrome()
        self.driver.implicitly_wait(5)
        eyes.open(self.driver,"Baidu首页","检查百度首页及搜索结果")
        self.driver.get('https://www.baidu.com')
        #第一个视觉验证检查点
        eyes.check("百度首页视觉验证",Target.window())
        self.driver.find_element(By.ID,"kw").send_keys("hello world")
        self.driver.find_element(By.ID,"su").click()
        #第二个视觉验证检查点
        eyes.check("百度搜索结果视觉验证",Target.window())
        eyes.close()
        self.driver.quit()
if __name__ == "__main__":
      unittest.main()

运行,运行通过,他会告诉你

--- Test passed. 
See details at https://eyes.applitools.com/app/batches/00000251648871736096/00000251648871735982?accountId=ag4cztZPEEOOoL6WkqNNqA__
.
----------------------------------------------------------------------
Ran 1 test in 20.359s
OK

https://eyes.applitools.com/app/batches/00000251648871736096/00000251648871735982?accountId=ag4cztZPEEOOoL6WkqNNqA__查看
image.png

由于第一次运行,结果是正确的。再次运行,出现结果

Re-raising an error received from SDK server: DiffsFoundError("Test '检查百度首页及搜索结果' of 'Baidu 首页' detected differences! See details at: https://eyes.applitools.com/app/batches/00000251648871497323/00000251648871497183?accountId=ag4cztZPEEOOoL6WkqNNqA__")
E
======================================================================
ERROR: test_baidu (__main__.checkEyes.test_baidu)
----------------------------------------------------------------------
Traceback (most recent call last):  
File "C:\Users\xiang\Desktop\eyes.py", line 31, in test_baidu
eyes.close()
File "C:\Users\xiang\AppData\Local\Programs\Python\Python312\Lib\site-packages\applitools\common\eyes.py", line 382, in close
return
super(WebEyes, self).close(raise_ex)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\xiang\AppData\Local\Programs\Python\Python312\Lib\site-packages\applitools\common\eyes.py", line 184, in close
return
self._close(raise_ex, True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\xiang\AppData\Local\Programs\Python\Python312\Lib\site-packages\applitools\common\eyes.py", line 233, in _close
results= self.get_results(raise_ex) if wait_result else []            
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\xiang\AppData\Local\Programs\Python\Python312\Lib\site-packages\applitools\common\eyes.py", line 167, in get_results    
results= self._commands.eyes_get_results(self._eyes_ref, raise_ex)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\xiang\AppData\Local\Programs\Python\Python312\Lib\site-packages\applitools\common\command_executor.py", line 275, in eyes_get_results
return self._checked_command(context, "Eyes.getResults", payload)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\xiang\AppData\Local\Programs\Python\Python312\Lib\site-packages\applitools\common\command_executor.py", line 288, in _checked_command_check_error(response_payload)
File "C:\Users\xiang\AppData\Local\Programs\Python\Python312\Lib\site-packages\applitools\common\command_executor.py", line 298, in _check_error
raise
usdk_error
applitools.common.errors.DiffsFoundError: Test '检查百度首页及搜索结果' of 'Baidu 首页' detected differences! See details at: https://eyes.applitools.com/app/batches/00000251648871497323/00000251648871497183?accountId=ag4cztZPEEOOoL6WkqNNqA__
----------------------------------------------------------------------
Ran 1 test in 22.625s
FAILED (errors=1)

仍旧到https://eyes.applitools.com/app/batches/00000251648871736096/00000251648871735982?accountId=ag4cztZPEEOOoL6WkqNNqA__查看
image.png

第一个检查点是相同的,第二个则不同,所以报错。选择Ignore region,然后通过鼠标点掉图上的粉红色。
image.png

点击右上角的保存键
image.png

再次运行,测试通过。

= RESTART: C:\Users\xiang\Desktop\eyes.py
--- Test passed. 
See details at https://eyes.applitools.com/app/batches/00000251648869473990/00000251648869473901?accountId=ag4cztZPEEOOoL6WkqNNqA__
.
----------------------------------------------------------------------
Ran 1 test in 25.603s
目录
相关文章
|
数据挖掘 测试技术 BI
性能工具之 Gatling 快速入门
Gatling 是一款基于 Scala 开发的高性能服务器性能测试工具,它主要用于对服务器进行负载等测试,并分析和测量服务器的各种性能指标。
1230 1
性能工具之 Gatling 快速入门
|
3月前
|
人工智能 自然语言处理 测试技术
Prompt Engineering 进阶:如何写出让 AI 自动生成高质量测试用例的提示词?
AI赋能测试用例设计,关键在结构化Prompt:需明确角色、业务、技术栈与约束,并融入等价类、状态图等测试方法论;要求表格化/代码化输出,辅以少样本示例和异常场景深挖。本质是将测试经验精准传递给AI。
|
7月前
|
敏捷开发 测试技术 API
测试金字塔:构建高效自动化测试策略的基石
测试金字塔:构建高效自动化测试策略的基石
530 116
|
7月前
|
前端开发 测试技术 API
测试金字塔:别再只盯着UI自动化了
测试金字塔:别再只盯着UI自动化了
642 116
|
5月前
|
人工智能 自然语言处理 物联网
AI 智能化测试平台:支持手工测试用例自动化执行的企业级解决方案
测吧推出AI智能化测试平台,基于大模型与智能体技术,将自然语言用例自动转化为可执行测试,无需脚本即可完成Web系统自动化测试。支持用例生成、智能执行、自动断言与缺陷提交,显著降低企业测试成本,提升效率与覆盖率,助力测试能力从“个人经验”向“平台化”升级,已服务华为、招行、军工等高复杂度行业客户。
|
6月前
|
人工智能 前端开发 IDE
仅凭几张图片,我们是如何让 AI 自动生成 70% 可用前端代码的?
本文系统总结了在仅有 UI 图片、无设计稿和交互说明的情况下,如何通过 AI 技术实现高质量前端代码自动生成。
仅凭几张图片,我们是如何让 AI 自动生成 70% 可用前端代码的?
|
7月前
|
数据采集 存储 人工智能
从0到1:天猫AI测试用例生成的实践与突破
本文系统阐述了天猫技术团队在AI赋能测试领域的深度实践与探索,讲述了智能测试用例生成的落地路径。
从0到1:天猫AI测试用例生成的实践与突破
|
6月前
|
敏捷开发 Devops 测试技术
测试用例生成太慢?我们用RAG+大模型,实现了分钟级全覆盖
在敏捷与DevOps时代,测试用例生成常成瓶颈。传统方法效率低、覆盖差、维护难。本文提出RAG+大模型方案,通过检索企业知识库(PRD、API文档等)为大模型提供上下文,精准生成高质量用例。实现从“小时级”到“分钟级”的跨越,提升覆盖率与知识复用,助力测试智能化升级。