appium应用切换以及toastd出框处理

appium应用切换以及toastd出框处理,第1张

appium应用切换以及toastd出框处理

一、应用切换

  应用切换的方法很简单,直接调用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')

  代码执行结果演示:


二、toastd出框处理 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信息!!!")

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/587102.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-12
下一篇 2022-04-12

发表评论

登录后才能评论

评论列表(0条)

保存