appium应用切换以及toast弹出框处理
一、应用切换
应用切换的方法很简单,直接调用driver.start_activity()方法,传入app_package和app_activity参数,示例代码如下:
from appium import webdriver desired_caps = {} # 配置平台信息 desired_caps['platformName'] = 'Android' desired_caps['platformVersion'] = '8.0' desired_caps['deviceName'] = 'Android Emulator' desired_caps['noReset'] = True # 获取应用的包名及启动类名 desired_caps['appPackage'] = 'com.tencent.mm' desired_caps['appActivity'] = 'com.tencent.mm.ui.LauncherUI' # 与appium server建立连接 driver = webdriver.Remote(command_executor='http://127.0.0.1:4723/wd/hub', desired_capabilities=desired_caps) driver.start_activity(app_package='com.autonavi.minimap', app_activity='com.autonavi.map.activity.SplashActivity')
代码执行结果演示:
二、toast弹出框处理
1.toast简介
toast是android中用来显示信息的一种机制,和Dialog对话框不一样的是toast没有焦点,而且toast显示的时间也有限,过很短的时间就会自动消失,并且也不能被点击。
在appium中,如果想要定位到toast信息,通过appium自带的inspector或者SDK里面的uiautomatorviewer工具发现是定位不到的,没有对应的属性信息,不过在appium v1.6.3及之后的版本支持toast获取。
2.toast获取
获取toast信息的注意事项:
- UIAutomator2只支持android版本5.0及以上
- appium server版本1.6.3及以上
- 需安装jdk1.8 64位及以上,并配置环境变量JAVA_HOME和path
- 启动参数需要指定:desired_caps['automationName'] = 'UiAutomator2'
desired_caps = {} # 设置UiAutomator2支持toast信息获取 desired_caps['automationName'] = 'UiAutomator2'
xpath表达式:
xpath = '//*[contains(@text, "文本内容")]'
等待:
使用presence_of_element_located,而不能使用visibility_of_element_located,在这里它对toast的可见处理并不支持,会直接抛出命令错误无法执行
# 获取对应的toast信息 xpath_locator = (MobileBy.XPATH, '//*[contains(@text, "{}")]'.format('手机号码或密码不能为空')) try: WebDriverWait(driver, 10, 0.01).until(EC.presence_of_element_located(xpath_locator)) # 因为toast信息消失的很快,所以频率需要指定,这里设定为0.01 print("已获取到toast信息:{}".format(driver.find_element(*xpath_locator).text)) except: print("未获取到toast信息!!!")
作者:小公瑾
-------------------------------------------
个性签名:不忘初心,方得始终!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!