python3+Appium自动化04-Toast元素识别

什么是toast?

如下图,“再按一次退出程序”,这就是toast

如何定位toast元素?

Appium1.6.3开始支持识别Toast内容,主要基于UiAutomator2

想定位toast元素,这里一定注意automation的参数必须是Uiautomator2才能定位到

‘automationName':'Uiautomator2'

安装appium-uiautomator2-driver

安装命令cnpm install appium-uiautomator2-driver

安装完成之后,进入appium的安装目录下C:\Roaming\npm\node_modules\appium\node_modules查看

且server目录下,apks文件夹中有如下apk

安装selenium模块

pip install selenium

安装完成后检测是否安装成功

 示例

场景:输入密码错误时,toast提示"用户名或密码不对"

 1 #coding=utf-8
 2 from appium import webdriver
 3 from selenium.webdriver.support.ui import WebDriverWait
 4 import time
 5 desired_caps = {
 6                 #android的apk
 7                 'platformName': 'Android',
 8                 #手机设备名称
 9                 'deviceName': '192.168.175.101:5555',
10                 #android系统的版本号
11                 'platformVersion': '5.1',
12                 'automationName':'Uiautomator2',
13 
14                 'app':r'C:\Users\bzART\Desktop\app-artmall-release.apk',
15                 # apk包名
16                 'appPackage': 'com.baozhenart.artmall',
17                 # apk的launcherActivity
18                 'appActivity': 'com.baozhenart.artmall.SplashActivity',
19                 #默认neReset为false,不要在会话前重置应用状态,每次启动都跟第一次启动一样,变为true则不一样
20                 'noReset':True
21 
22 }
23 driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
24 driver.implicitly_wait(10)
25 
26 #点击个人中心
27 driver.find_element_by_id("com.baozhenart.artmall:id/ll_user").click()
28 time.sleep(2)
29 #点击登录注册
30 driver.find_element_by_id("com.baozhenart.artmall:id/iv_user_head").click()
31 
32 time.sleep(2)
33 #点击密码验证登录
34 driver.find_element_by_id("com.baozhenart.artmall:id/login_title").click()
35 time.sleep(2)
36 #输入用户名
37 driver.find_element_by_id("com.baozhenart.artmall:id/et_username").clear()
38 driver.find_element_by_id("com.baozhenart.artmall:id/et_username").send_keys("bd2")
39 # 输入密码
40 driver.find_element_by_id("com.baozhenart.artmall:id/et_password").send_keys("1234567")
41 #点击确定
42 driver.find_element_by_id("com.baozhenart.artmall:id/bt_login").click()
43 
44 error_message="用户名或密码不对"
45 message='//*[@text=\'{}\']'.format(error_message)
46 toast_element = WebDriverWait(driver,5).until(lambda x:x.find_element_by_xpath(message))
47 print(toast_element.text)

toast定位踩过的坑

增加了'automationName':'Uiautomator2'这个,运行脚本就报错,注释掉就正常,报错如截图所示

此时是由于版本兼容性问题,试着把appium升级到最新版本试试。我用的是1.8.1正常,之前是1.7.2就报上面的错误

posted on 2018-07-06 14:07  深海溺心  阅读(273)  评论(0编辑  收藏  举报

导航