Robotframework获取移动端toast问题
背景:
在做移动端自动化测试的时候,经常会遇到一个问题就是获取toast提示问题,如果需要解决这个问题需要重新处理,不能按照正常的逻辑,使用robotframework自带的关键字进行获取,需要重新考虑新的处理获取模式
一 环境配置
如果环境配置OK直接跳到第6步安装uiautomator2
1.下载Appium最新版
地址:https://github.com/appium/appium-desktop/releases
2.下载Python,并安装
3.下载Pycharm
4.下载Android SDK
5.安装uiautomator2
– 安装NPM镜像,地址:https://npm.taobao.org/
– 执行命令:npm install -g cnpm –registry=https://registry.npm.taobao.org
– 安装uiautomator2的配置文件执行命令:cnpm install appium-uiautomator2-driver
环境搭建好后,进行获取toast
1 进入appium安装根目录,D:\Python27\Lib\site-packages\robotframework_appiumlibrary-1.5-py2.7.egg\AppiumLibrary\keywords,找到_element.py进行修改文件 2 ,加入这段语句 3 def toast_open_application(self,automationName,platformName,platformVersion,deviceName,uiid,appPackage,appActivity,unicodeKeyboard,resetKeyboard,noReset): 4 5 desired_caps={} 6 desired_caps['automationName']=automationName 7 desired_caps["platformName"] = platformName 8 desired_caps["platformVersion"] = platformVersion 9 desired_caps["deviceName"] = deviceName 10 desired_caps["uiid"] = uiid 11 desired_caps["appPackage"] = appPackage 12 desired_caps["appActivity"] = appActivity 13 14 desired_caps["unicodeKeyboard"] = unicodeKeyboard 15 desired_caps["resetKeyboard"] = resetKeyboard 16 desired_caps["noReset"] = noReset 17 18 driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps) 19 return driver 20 21 def new_clear(self,driver,path): 22 WebDriverWait(driver,20).until(EC.visibility_of_element_located((MobileBy.ID,'com.X.XX.debug:id/account'))) 23 driver.find_element_by_id(path).clear() 24 25 def new_input(self,driver,path,data): 26 driver.find_element_by_id(path).send_keys(data) 27 28 def new_click(self,driver,path,message): 29 driver.find_element_by_id(path).click() 30 # toast_loc = '//*[contains(@text,"请输入正确规则的密码")]' 31 toast_loc =".//*[contains(@text,'%s')]" %message 32 # print((MobileBy.XPATH,toast_loc)) 33 try: 34 WebDriverWait(driver,5,0.01).until(EC.presence_of_all_elements_located((MobileBy.XPATH,toast_loc))) 35 print(driver.find_element_by_xpath(toast_loc).text) 36 except: 37 print('没有获取到toast信息')
robotframework使用该封装的关键字进行获取
1 登录_密码错误(toast) 2 Comment Login Toast 请输入正确规则的密码 3 ${driver} Toast Open Application UiAutomator2 Android 6.0 Lenovo TB3-X70N FACU8TP7UCAAMNUO 4 ... com.X.cXd.debug com.XX.XXactivity.SplashActivity True True True 5 New Clear ${driver} com.XX.XX.debug:id/account 6 New Input ${driver} com.XX.cXXd.debug:id/account 123456 7 New Clear ${driver} com.XX.XX.debug:id/pwd 8 New Input ${driver} com.XX.XX.debug:id/pwd 123456ab 9 New Click ${driver} com.XX.XX.debug:id/login 请输入正确规则的密码
结果: