cucumber-calabash android - 停止在每个 html 结果中覆盖屏幕截图

cucumber-calabash android - stop screenshots being overwritten in each html result

问题:每个设备的结果 html 文件中的屏幕截图被覆盖

场景:我正在 运行ning calabash-android 测试单个移动应用程序 运行ning 在多个设备上。

SCREENSHOT_PATH环境变量设置为c:/AndroidApp/Results/deviceScreenshots/

此位置将存储截取的所有屏幕截图。

在批处理文件中指定输出格式html,输出位置为C:\AndroidApp\Results\device1\deviceId

对于多个设备,我们为每个设备单独占一行,因此设备 1、设备 2 等等……等等。

当我完成 运行 并检查每台设备的屏幕截图时,我发现屏幕截图正在被覆盖,它们是从环境变量位置获取的。

例:环境变量文件夹有10张截图

设备 1 已截取 10 个屏幕截图 设备 2 已截取 10 个屏幕截图

设备 2 包含与设备 1 相同的 10 个屏幕截图,因为环境变量文件夹的图像名称是 screenshot1.png、screenshot2.png 等等

我已经为每个设备指定了一个唯一的设备文件夹html 结果输出,所以我们确实有唯一的结果文件,但是截图正在被覆盖,因为是从环境变量文件夹中获取的。

有什么想法吗?谢谢大家

格雷姆

再次阅读您的问题我可以看到您确实设置了路径,但是您对两个 运行 使用相同的路径?如果那是你所做的以及你想如何去做。我的第二个选项可能最适合你(根据设备为屏幕截图添加前缀)。

执行测试时可以设置截图路径

SCREENSHOT_PATH=/tmp/foo/ calabash-android run

Link 到 Github 关于它 https://github.com/calabash/calabash-android

因此您可以将屏幕截图放在不同的文件夹中。 或者,您可以根据测试 运行 所在的设备为截取的屏幕截图添加前缀。喜欢

screenshot({:prefix => "/tmp", :name=>"my.png"})

Link 到 Github https://github.com/calabash/calabash-android/blob/master/documentation/ruby_api.md

我们尝试了一种不同的方法,即在屏幕截图名称后附加时间日期戳,而不是使用增量整数计数器。

将以下代码行添加到 operations.rb 文件。 (不是 failureHelpers.rb)以特定格式将日期存储到 t1 变量,并将该 t1 变量输出到前缀。

@@t1 = DateTime.now.strftime("%Y%m%dT%H%M%S%3N")
path = "#{prefix}#{name}_#{@@t1}.png" 

operations.rb 的代码片段现在是:

def screenshot(options={:prefix => nil, :name => nil})
prefix = options[:prefix] || ENV['SCREENSHOT_PATH'] || ""
name = options[:name]

if name.nil?
  name = "screenshot"
    else
      if File.extname(name).downcase == ".png"
        name = name.split(".png")[0]
      end
    end

    @@t1 = DateTime.now.strftime("%Y%m%dT%H%M%S%3N")
    path = "#{prefix}#{name}_#{@@t1}.png" 

希望这会有所帮助,它不是原始问题的解决方案,只是对问题的重新思考的解决方案..呸...

无论如何,谢谢大家的贡献,确实很有趣。

感谢我的同事测试人员,他的工作真的不是我的。