我正在使用 Appium、Serenity 和 POM 模型构建 android 框架。
如果任何步骤失败,我想截屏。
有人可以帮我写代码吗,请让我知道把它放在哪里?例如,我有 Pages、steps 和 stepdefinition 类。不确定在哪里实施?
我正在使用 Appium、Serenity 和 POM 模型构建 android 框架。
如果任何步骤失败,我想截屏。
有人可以帮我写代码吗,请让我知道把它放在哪里?例如,我有 Pages、steps 和 stepdefinition 类。不确定在哪里实施?
以下是测试失败时获取视频的示例。
conftest.py(在根目录下)
@pytest.fixture
def appdriver():
driver = config.get_driver_caps()
if config.IS_IOS:
driver.start_recording_screen(videoQuality='high', videoType='mpeg4', videoFps='24')
else:
driver.start_recording_screen()
yield driver
attach_device_log(driver)
save_screenshot(driver)
driver.quit()
保存截图方法
def save_screenshot(appdriver):
allure.attach(
appdriver.get_screenshot_as_png(),
name='screenshot',
attachment_type=allure.attachment_type.PNG
)
我试图通过 OpenCV 库将图片与模板进行比较。我就是做这个的:
将方法添加到base_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
作为所有这一切的结果,我得到了一定比例的图片相似度。它可以是你需要的那个百分比。对于我的测试来说没问题。
如果您是指测试结果的屏幕截图,请告诉我,我可以向您展示我是如何使用 Allure 做到的。
如果您指的是 Appium 中的常用屏幕截图,请提供一些您发现的错误。