Appium+Python+Android,识别toast提示信息
很久很久以前,为了识别Android手机应用上的toast提示信息,在脚本中加入了adb的截图+Python三方库(Tesseract-OCR)图片识别,过程很辛苦,结果很失望,根本截不到toast提示。
翻旧账,一定要搞定toast,查了很多资料,最后又回来了:查找元素!没错,就是它。。。
话不多说,直接上代码:
一顿乱导。。。
import time
from appium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '5.1.1'
desired_caps['deviceName'] = '127.0.0.1:62001'
desired_caps['appPackage'] = 'com.doctor.yy'
desired_caps['appActivity'] = 'com.doctor.br.activity.LauncherActivity'
desired_caps['unicodeKeyboard'] = True
desired_caps['resetKeyboard'] = True
desired_caps['automationName'] = 'uiautomator2'
dr = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
x = dr.get_window_size()['width']
y = dr.get_window_size()['height']
# 滑他
time.sleep(1)
dr.swipe(x*0.9,y*0,x*0.1,y*0,1000)
# 再滑他
time.sleep(1)
dr.swipe(x*0.9,y*0,x*0.1,y*0,1000)
# 接着滑他
time.sleep(1)
dr.swipe(x*0.9,y*0,x*0.1,y*0,1000)
# 好了,滑进去了
time.sleep(1)
dr.find_element_by_id('com.doctor.yy:id/iv_enter').click()
time.sleep(1)
dr.find_element_by_id('com.doctor.yy:id/iv_enter').click()
time.sleep(1)
dr.find_element_by_id('com.doctor.yy:id/et_username').send_keys('13600000015')
time.sleep(1)
dr.find_element_by_id('com.doctor.yy:id/et_password').send_keys('25800000')
time.sleep(1)
dr.find_element_by_id('com.doctor.yy:id/btn_login').click()
# 自定义一个定位器,要查找的toast内容为:账号或者密码错误!
toast_loc = (By.XPATH,".//*[contains(@text,'帐号或者密码错误!')]")
toast_text = WebDriverWait(driver=dr,timeout=5).until(EC.presence_of_element_located(toast_loc))
# 输出一下,查看一下元素的文本内容
print (toast_text.text)

浙公网安备 33010602011771号