首先是appium的截图函数
我封装在了Base层中,这样各个页面调用比较方便:
需要在函数中指定截图存放的地址和截图名,建议用个时间函数啥的当作文件名的动态部份,这样截图名字就不会重复
def screenshot(self, message):
self.driver.get_screenshot_as_file('./reports/image/{}异常记录.png'.format(message))
在pageobject层中,应用截图功能:
处理方式就是把用例操作全部扔到try里,如果try失败了,就截图,然后加了个assert断言失败,方便pytest报告里记录失败用例,不加的话无论失败与否pytest框架都会判断你的用例执行成功了
class LoginPage(BasePage):
# 输入框元素组
loc_edit_group = (AppiumBy.ANDROID_UIAUTOMATOR, 'new UiSelector().className("android.widget.EditText")')
# 登录按钮
loc_login = (AppiumBy.XPATH, "//android.widget.TextView[@text=\"登录\"]")
def login(self, username, password):
try:
self.input_group(self.loc_edit_group, username, 0)
self.input_group(self.loc_edit_group, password, 1)
self.click(self.loc_login)
except:
self.screenshot('{}登录模块'.format(datetime.datetime.now().strftime("%Y-%m-%d_%H_%M")))
assert 1 == 0, "登录未成功"