android 9.0 toast不显示,9.0 toast定位+WebDriverWait显示等待
Toast ?判斷-----基本操作問題
首先基本操作,進(jìn)入安卓市場的賬號(hào)密碼頁面---
from appium importwebdriverfrom selenium.webdriver.support.ui importWebDriverWaitfrom selenium.webdriver.support importexpected_conditions as ECfrom appium.webdriver.common.touch_action import TouchAction #導(dǎo)入Touch Action類
importtime,re,os
Start={}
Start['platformName']='android' #設(shè)備型號(hào) android或者ios
Start['platformVersion']='5.1' #安卓設(shè)備版本號(hào)
Start['deviceName']='192.168.176.101:5555' #安卓設(shè)備名稱
Start['app']=r'C:\Users\Administrator\Desktop\xuexi\apk\anzhuoshichang_16793302.apk' #設(shè)備路徑 pc電腦存放apk包的路徑#上面的路徑不推薦這種寫法,但是目前先這么寫!后續(xù)告訴大家正確的寫法
Start['appPackage']='com.hiapk.marketpho' #包名
Start['appActivity']='com.baidu.appsearch.LauncherActivity' #容器
Start['noReset']='True' #是否重新安裝app True不重新安裝
Start['unicodeKeyboard']='True' #是否禁用手機(jī)鍵盤 True禁用手機(jī)輸入法
Start['resetKeyboard']='True' #是否啟動(dòng)appium自帶鍵盤 True開始手機(jī)輸入法
Start['automationName']='uiautomator2' #可選模式 本教程默認(rèn) Uiautomator2
Start['newCommandTimeout']='400' #超時(shí)時(shí)間(s)
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',Start)
driver.implicitly_wait(10) #隱式等待十秒
time.sleep(3)'''模擬器或者手機(jī)上已經(jīng)有了安卓市場,那么啟動(dòng)之后,直接點(diǎn)擊左上角的頭像圖標(biāo)'''head='com.hiapk.marketpho:id/person_center_btn'driver.find_element_by_id(head).click()#點(diǎn)擊頭像圖標(biāo)進(jìn)入個(gè)人中心
time.sleep(5)
login='com.hiapk.marketpho:id/please_login'driver.find_element_by_id(login).click()#點(diǎn)擊立即登錄
time.sleep(5)
為什么要進(jìn)入到這個(gè)頁面呢---因?yàn)檫@個(gè)頁面輸入有個(gè)toast提示............
如圖所示:這個(gè)toast提示是在uiautomator上面定位不到的,所以需要稍微處理一下!
然后隨便輸入一個(gè)手機(jī)號(hào)碼和一個(gè)密碼登記登錄:
Elements=driver.find_elements_by_id('com.hiapk.marketpho:id/edt_text')
Elements[0].set_text('17700000000') #因?yàn)橘~號(hào)輸入和密碼輸入id相同,所以需要用到elements,之前有介紹過
Elements[1].set_text('123456')
driver.find_element_by_id('com.hiapk.marketpho:id/btn_login').click()
這時(shí)手機(jī)出現(xiàn)下圖所示的toast提示:
之前章節(jié)有說過權(quán)限彈窗定位的那個(gè)方法--用在這里就O了!記得導(dǎo)入這個(gè)庫
from selenium.webdriver.support import expected_conditions as EC
try:
Element= ("xpath", "//*[@text='網(wǎng)絡(luò)連接異常,請(qǐng)重試']")
WebDriverWait(driver,30, 0.5).until(EC.presence_of_element_located(Element))print('獲取到toast提示:網(wǎng)絡(luò)連接異常,請(qǐng)重試')except:print('涼了,兄碟')
稍微換一下寫法呢:
結(jié)果:很舒服---也是可以的--
try:
Element= "//*[@text='網(wǎng)絡(luò)連接異常,請(qǐng)重試']"WebDriverWait(driver,60, 0.5).until(lambdadriver:driver.find_element_by_xpath(Element))print('獲取到toast提示:網(wǎng)絡(luò)連接異常,請(qǐng)重試')except:print('涼了,兄碟')
備注:toast定位基本上是穩(wěn)定的,但是偶爾會(huì)判斷不鳥,屬于正常現(xiàn)象,建議把掃描時(shí)間0.5s換成0.1s會(huì)穩(wěn)定很多!
WebDriverWait(driver,60, 0.5).until(lambda driver:driver.find_element_by_xpath(Element))
這個(gè)是顯示等待,?意思就是 等待60s ??在這六十秒中,每隔0.5秒掃描一次,是否出現(xiàn)元素 Element
現(xiàn)在把上面的強(qiáng)制等待time.sleep()全部換成顯示等待!
from appium importwebdriverfrom selenium.webdriver.support.ui importWebDriverWaitfrom selenium.webdriver.support importexpected_conditions as ECfrom appium.webdriver.common.touch_action import TouchAction #導(dǎo)入Touch Action類
importtime,re,os
Start={}
Start['platformName']='android' #設(shè)備型號(hào) android或者ios
Start['platformVersion']='5.1' #安卓設(shè)備版本號(hào)
Start['deviceName']='192.168.176.101:5555' #安卓設(shè)備名稱
Start['app']=r'C:\Users\Administrator\Desktop\xuexi\apk\anzhuoshichang_16793302.apk' #設(shè)備路徑 pc電腦存放apk包的路徑#上面的路徑不推薦這種寫法,但是目前先這么寫!后續(xù)告訴大家正確的寫法
Start['appPackage']='com.hiapk.marketpho' #包名
Start['appActivity']='com.baidu.appsearch.LauncherActivity' #容器
Start['noReset']='True' #是否重新安裝app True不重新安裝
Start['unicodeKeyboard']='True' #是否禁用手機(jī)鍵盤 True禁用手機(jī)輸入法
Start['resetKeyboard']='True' #是否啟動(dòng)appium自帶鍵盤 True開始手機(jī)輸入法
Start['automationName']='uiautomator2' #可選模式 本教程默認(rèn) Uiautomator2
Start['newCommandTimeout']='400' #超時(shí)時(shí)間(s)
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',Start)
driver.implicitly_wait(10) #隱式等待十秒
time.sleep(3)'''模擬器或者手機(jī)上已經(jīng)有了安卓市場,那么啟動(dòng)之后,直接點(diǎn)擊左上角的頭像圖標(biāo)'''head='com.hiapk.marketpho:id/person_center_btn'driver.find_element_by_id(head).click()#點(diǎn)擊頭像圖標(biāo)進(jìn)入個(gè)人中心
#time.sleep(5)
login='com.hiapk.marketpho:id/please_login'
#判斷十秒內(nèi)是否獲取到登錄元素
WebDriverWait(driver,10,0.5).until(lambdadriver:driver.find_element_by_id(login))
driver.find_element_by_id(login).click()#點(diǎn)擊立即登錄#time.sleep(5)
Elements=driver.find_elements_by_id('com.hiapk.marketpho:id/edt_text')#點(diǎn)擊立即登錄之后,獲取下一頁頁面的元素
WebDriverWait(driver,10,0.5).until(lambda driver:driver.find_element_by_xpath('//*[@text="手機(jī)/郵箱/通行證"]'))
Elements[0].set_text('17700000000') #因?yàn)橘~號(hào)輸入和密碼輸入id相同,所以需要用到elements,之前有介紹過
Elements[1].set_text('123456')
driver.find_element_by_id('com.hiapk.marketpho:id/btn_login').click()#因?yàn)檫@個(gè)toast提示時(shí)間出來的有點(diǎn)晚,所以等待時(shí)間稍微加那么一丟丟#try:#Element = ("xpath", "//*[@text='網(wǎng)絡(luò)連接異常,請(qǐng)重試']")#WebDriverWait(driver,60, 0.5).until(EC.presence_of_element_located(Element))#print('獲取到toast提示:網(wǎng)絡(luò)連接異常,請(qǐng)重試')#except:#print('涼了,兄碟')
try:
Element= "//*[@text='網(wǎng)絡(luò)連接異常,請(qǐng)重試']"WebDriverWait(driver,60, 0.5).until(lambdadriver:driver.find_element_by_xpath(Element))print('獲取到toast提示:網(wǎng)絡(luò)連接異常,請(qǐng)重試')except:print('涼了,兄碟')
基本上原理都是大同小異....理解了之后,可以寫的花里胡哨的!!!!!
總結(jié)
以上是生活随笔為你收集整理的android 9.0 toast不显示,9.0 toast定位+WebDriverWait显示等待的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【锐捷路由】静态路由配置
- 下一篇: Linux more 命令使用介绍