Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Appium为故障截图_Appium_Appium Android_Takesscreenshot - Fatal编程技术网

Appium为故障截图

Appium为故障截图,appium,appium-android,takesscreenshot,Appium,Appium Android,Takesscreenshot,我正在使用Appium、Serenity和POM模型构建android框架 如果任何一步都失败了,我想截图 有人能帮我写代码吗?请告诉我放在哪里? 我有页面、步骤和步骤定义类。 不确定在哪里实现它?我试图通过OpenCV库将图片与模板进行比较。我就是这么做的: 将方法添加到base\u page.py def compare_image_with_screenshot(self, image_name: str): os.chdir('../src/screenshots/')

我正在使用Appium、Serenity和POM模型构建android框架

如果任何一步都失败了,我想截图

有人能帮我写代码吗?请告诉我放在哪里? 我有页面、步骤和步骤定义类。
不确定在哪里实现它?

我试图通过OpenCV库将图片与模板进行比较。我就是这么做的:

  • 将方法添加到
    base\u page.py

    def compare_image_with_screenshot(self, image_name: str):
        os.chdir('../src/screenshots/')
    
        with open(f'{image_name}.png', 'rb') as img:
            first_image = base64.b64encode(img.read()).decode('ascii')
    
        second_image = base64.b64encode(self._driver.get_screenshot_as_png()).decode('ascii')
    
        return self._driver.get_images_similarity(first_image, second_image)
    
  • 在页面对象文件中使用此方法

    @allure.step('Compare screenshot with template')
    def get_image_comparison_percents(self):
    """
    This method gets screenshot on device with template in repo. Comparison result is percentage of similarity. Test is OK if comparison more than 90%
    """
        result = self.compare_image_with_screenshot(OfflineLocators.offline_stub)
        return result.get('score')
    
  • 在必要的测试中使用步骤

    @allure.link(url='https://jira.myproject.tech/browse/TEST-1', name='TEST-1 - Offline stub')
    @allure.title('Offline stub')
    def test_offline_stub(appdriver):
    
        TourActions(appdriver).skip_tour()
        Navigation(appdriver).open_my_offline_page()
    
        assert Offline(appdriver).get_page_title_text() == 'Offline'
        assert Offline(appdriver).get_image_comparison_percents() > 0.9
    
  • 在所有这些的结果中,我得到了一些百分比的图片相似性。它可以是你所需要的百分比。对于我的测试,它是好的

    如果你指的是测试结果的截图,请让我知道,我可以向你展示我是如何使用诱惑的


    如果您指的是Appium中常见的屏幕截图,请提供您发现的一些错误。

    下面是测试失败时获取视频的示例

  • conftest.py(在根目录中)

  • 保存截图方法

    def save_screenshot(appdriver):
        allure.attach(
             appdriver.get_screenshot_as_png(),
             name='screenshot',
             attachment_type=allure.attachment_type.PNG
         )
    

  • 有什么意见吗?嗨,米哈伊尔,谢谢你的回复。你在做屏幕比较吗?我想为测试结果截图,也只有在失败的情况下才会截图。你也可以分享一下appium serenity框架pls吗?是的,我的例子是关于截图比较的。如果您需要通过失败获得屏幕截图,我可以用诱惑框架展示示例。我在下一个答案中添加了其他答案。
    def save_screenshot(appdriver):
        allure.attach(
             appdriver.get_screenshot_as_png(),
             name='screenshot',
             attachment_type=allure.attachment_type.PNG
         )