[英]How to compare image with robot framework
我是机器人框架的新手,正在尝试比较两个图像。 我从头开始进行一些研发,发现现有的RobotAppEyes库可以帮助比较图像。
链接1: http : //navinet.github.io/Robot-AppEyes/RobotAppEyes-KeywordDocumentation.html#Compare%20Image
链接2: https : //github.com/NaviNet/Robot-AppEyes
我正在使用同一个库来比较图像,但是在比较两个图像时面临以下问题。
** Settings ***
Library Selenium2Library
Library RobotAppEyes
*** Test Cases ***
RobotAppEyes 1.0 Test
Open Browser http://www.google.com.uk gc
Maximize Browser Window
Open Eyes Session http://www.google.com.uk RobotAppEyes_Test NaviNet_RobotAppEyes_Test1 JkaJK50dp1NTEhPufx08SaztsXmfBZas8z0MZVcaqcA110
# ${isOpen}= Eyes Session Is Open
# Log ${isOpen}
Compare Image C:\\Users\\Downloads\\logo.png C:\\Users\\user\\Downloads\\logo.png ignore_mismatch=False includeEyesLog=False httpDebugLog=False
Check Eyes Region .//*[@id='splash']/div[1] 500 120 logo
Run Keyword If ${isOpen}==True Close Eyes Session
Close Eyes Session
执行机器人脚本后的响应:
RobotAppEyes 1.0 Test | FAIL |
TypeError: _create_match_data_bytes() takes at least 6 arguments (5 given)
------------------------------------------------------------------------------
有人可以借助机器人框架帮助我进行图像比较吗?
这是我在评论中进行讨论后的回答。 这不是对Dipak问题的完美答案,我知道这一点,但他要求我发布。
from robot.libraries.BuiltIn import BuiltIn
import pyautogui as pag
class click_by_image(object):
def __init__(self):
self.selenium_lib = None
def click_by_image(self, image_name):
"""
Click the center of a rectangle on the screen given the
image_name of the image rectangle to search for
:param image_name: Path to image
"""
# If ExtendedSelenium2Library instance is undefined
if self.selenium_lib is None:
# Instantiate ExtendedSelenium2Library
self.selenium_lib = BuiltIn().get_library_instance('ExtendedSelenium2Library')
pag.click(pag.locateCenterOnScreen(str(image_name)))
这就是它来自的完整关键字。 小图片(在大约20像素x 40像素处有问题,尽管我还没有精确测量),但它很滑,但假定屏幕上存在确切的像素集,它对大图片效果很好。 那是屏幕上的任何地方 ,而不仅仅是DOM中的东西,所以这就是我用来在标签之间单击并与普通桌面进行交互的方式。
要使用此关键字,请将图片的本地副本作为绝对路径或相对路径提供给click_by_image()
,无论该路径有效还是有效,它都将按照文档说明进行操作。
我提到的特定代码是pag.locateCenterOnScreen()
,它来自pyautogui。 它返回一组坐标,因此,如果您未获得这些坐标,则图像不会出现在屏幕上。 如果这样做,那么您知道a)您的图像存在,并且b)它在哪里。
可以使用image Magic解决此问题
Compare Images
[Arguments] ${Reference_Image_Path} ${Test_Image_Path} ${Allowed_Threshold}
${TEMP}= Replace String ${IMAGE_COMPARATOR_COMMAND} __REFERENCE__ ${Reference_Image_Path}
${COMMAND}= Replace String ${TEMP} __TEST__ ${Test_Image_Path}
Log ${Allowed_Threshold}
Log Executing: ${COMMAND}
${RC} ${OUTPUT}= Run And Return Rc And Output ${COMMAND}
# ${RC} ${OUTPUT}= Run And Return Rc And Output C:/"Program Files"/ImageMagick-7.0.7-Q16/convert.exe C:/Users/user/imagecompare/Test/src/reference-screenshots/reference-1.png C:/Users/user/imagecompare/Test/src/reference-screenshots/reference-11.png -metric RMSE -compare -format "%[distortion]" info:
Log Return Code: ${RC}
Log Return Output: ${OUTPUT}
${RESULT} Evaluate ${OUTPUT} < ${Allowed_Threshold}
Should be True ${RESULT}
https://blog.codecentric.de/zh/2017/09/robot-framework-compare-images-screenshots/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.