无法在 Windows 环境中将图像与 Imagemagick 与机器人框架进行比较

Posted

技术标签:

【中文标题】无法在 Windows 环境中将图像与 Imagemagick 与机器人框架进行比较【英文标题】:Failed to compare images with Imagemagick with robot framework on Windows environment 【发布时间】:2018-03-28 04:16:34 【问题描述】:

我正在使用 Imagemagick 比较 windows 环境中的两个屏幕截图。

https://blog.codecentric.de/en/2017/09/robot-framework-compare-images-screenshots/

   *** Settings ***
Library   String
Library   OperatingSystem

*** Variables ***
$IMAGE_COMPARATOR_COMMAND   C:\\"Program Files"\\ImageMagick-7.0.7-Q16\\convert.exe


*** Test Cases ***
Image Comparison Ok
  Compare Images    C:/Users/user/imagecompare/Test/src/reference-screenshots/reference-1.png    C:/Users/user/imagecompare/Test/src/test-screenshots/test-1.png   0.1


Image Comparison NOk
  Compare Images    C:/Users/user/imagecompare/Test/src/reference-screenshots/reference-1.png    C:/Users/user/imagecompare/Test/src/test-screenshots/test-1.png   0.1

*** Keywords ***
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              Executing: $COMMAND
   $RC            $OUTPUT=     Run And Return Rc And Output     $COMMAND
   Log              Return Code: $RC
   Log              Return Output: $OUTPUT
   $RESULT        Evaluate    $OUTPUT < $Allowed_Threshold
   Should be True   $RESULT

但遇到以下问题:

    KEYWORD BuiltIn . Log Return Output: $OUTPUT
Documentation:  
Logs the given message with the given level.
Start / End / Elapsed:  20171016 15:45:38.561 / 20171016 15:45:38.562 / 00:00:00.001
15:45:38.561    INFO    Return Output: The system cannot find the path specified.   
00:00:00.003KEYWORD $RESULT = BuiltIn . Evaluate $OUTPUT < $Allowed_Threshold
Documentation:  
Evaluates the given expression in Python and returns the results.
Start / End / Elapsed:  20171016 15:45:38.562 / 20171016 15:45:38.565 / 00:00:00.003
15:45:38.563    FAIL    Evaluating expression 'The system cannot find the path specified. < 0.1' failed: SyntaxError: invalid syntax (<string>, line 1)

【问题讨论】:

【参考方案1】:

如果您想在 ImageMagick v7 中使用 "legacy" convert 命令,您需要在安装 ImageMagick 期间单击显示 " 的选项安装旧版工具”

或者,使用新命令:

magick input.png ... output.png

而不是:

convert input.png ... output.png

因此,如果您知道如何将配置变量 IMAGE_COMPARATOR_COMMAND 更改为 C:\\"Program File"\\ImageMagick-7.0.7-Q16\\magick,则无需重新安装 ImageMagick 即可。

【讨论】:

它不起作用我尝试了上述解决方案,并且为了您的信息我已经安装了旧实用程序(转换器) 请检查您的IMAGE_COMPARATOR_COMMAND中的路径 - 通常是C:\\Program FileSSSS... 下面是 IMAGE_COMPARATOR_COMMAND C:\Program Files\ImageMagick-7.0.7-Q16 的路径 这不是您在上述设置中显示的内容 - 您似乎错过了 Program Files 上的 s 已更正变量名但仍面临问题 --> 默认情况下,“文件”的图像格式由其幻数确定。要指定特定的图像格式,请在文件名前加上图像格式名称和冒号(即 ps:image)或将图像类型指定为文件名后缀(即 image.ps)。对于标准输入或输出,将“文件”指定为“-”。 ,第 1 行)【参考方案2】:

$IMAGE_COMPARATOR_COMMAND C:/"Program Files"/ImageMagick-7.0.10-Q16/convert.exe REFERENCE TEST -metric RMSE -compare -format " %[失真]" 信息:

将上面的 IMAGE_COMPARATOR_COMMAND 替换为适合您路径的更改。 它对我有用。 谢谢

【讨论】:

以上是关于无法在 Windows 环境中将图像与 Imagemagick 与机器人框架进行比较的主要内容,如果未能解决你的问题,请参考以下文章

无法在 SwiftUI 中将类型“图像”的值转换为预期的参数类型“字符串”

在 Windows Phone 和 Silverlight 中将 Image Feed 转换为 BitmapImage

无法在 Xamarin C# 中将图像设置为 UIButton

在“多对多关系”环境中将图片保存在 Core Data 中

无法在 Xamarin Android 中将图像从资源设置为自定义 ImageView?

在 Flutter 中将视频文件保存到设备