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就报上面的错误