在pytest钩子函数中判断Android和iOS设备(方法二)
在pytest钩子函数中判断是Android手机还是iOS手机的方法二:
可以通过driver.capabilities['platformName']来判断,‘platformName’是常见的用于区分平台的字段。如果是 iOS,platformName 会是 iOS,如果是 Android,platformName 会是 Android。
更新后的 pytest_runtest_makereport 钩子函数代码如下:
@pytest.hookimpl(tryfirst=True, hookwrapper=True)
def pytest_runtest_makereport(item, call):
outcome = yield
report = outcome.get_result()
driver = item.funcargs.get("android_driver") or item.funcargs.get("ios_driver")
if driver:
# 判断设备平台类型
platform_name = driver.capabilities.get('platformName')
if platform_name == 'Android':
driver = item.funcargs['android_driver']
elif platform_name == 'iOS':
driver = item.funcargs['ios_driver']
driver.capabilities.get('platformName'):获取设备的 platformName,这是 Appium 创建的 WebDriver 对象的一个标准字段。
如果 platformName 为 Android,则表示这是 Android 设备;如果为 iOS,则是 iOS 设备。
这种方法无需直接比较驱动类,而是通过 capabilities 来做判断,能更好地适应不同驱动的场景。