1、安卓端appium?切換webvivew
問題:使用switch_to.context()切換時總是提示版本不對應(yīng)(報錯如下)
selenium.common.exceptions.WebDriverException:Message:An unknown server-side error occurredwhileprocessing the command. Original error:No Chromedriverfoundthat can automate Chrome'74.0.3729'. See https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/web/chromedriver.md formore details. You could alsotryto enable automated chromedrivers download server feature
原因:app內(nèi)部集成的三方webvivew,查看app內(nèi)部的webvivew版本是(69.0.3497.100),而手機原生webvivew是74.0.3729'版本
解決方法:需要下載與app內(nèi)部集成webvivew版本相同的Chromedriver版本,且手機內(nèi)置原生webvivew不超過app內(nèi)部集成的webvivew版本
備注:如果app內(nèi)使用的系統(tǒng)原生webvivew,則只需要按照報錯中的版本下載對應(yīng)的Chromedriver版本替換掉appium中的Chromedriver版本即可
2、Appium?webview 下的 click () 事件無響應(yīng)
問題:明明appium腳本顯示pass,但實際沒任何反應(yīng)
原因:原來很多webview界面的元素監(jiān)聽的是tap事件,不是click事件。
解決方法:使用selenium的TouchActions里的tap事件,代碼如下(可以自行封裝后調(diào)用)
fromselenium.webdriver.common.touch_actionsimport TouchActions
el = driver.find_element_by_css_selector("")
TouchActions(driver).tap(el).perform()
3、定位到元素時無法點擊
問題:定位到元素時點擊報錯提示
selenium.common.exceptions.WebDriverException:Message:An unknown server-side error occurredwhileprocessing the command. Original error:unknown error:Element isnotclickable at point (180,506). Other element would receive the click:
原因:頁面元素已經(jīng)加載完成,但是頁面還未完全顯示出來還在加載,點擊不生效
解決方法:這個地方受網(wǎng)絡(luò)波動影響,尤其是跨頁面進行操作,建議保持網(wǎng)速穩(wěn)定且使用sleep多設(shè)置幾秒保證頁面完全加載
4、頁面內(nèi)有此元素但是從其他頁面跳轉(zhuǎn)過來后提示未找到
問題:當(dāng)前頁面肯定有此元素但是從其他頁面跳轉(zhuǎn)至該頁面后提示未找到此元素
原因:頁面發(fā)生跳轉(zhuǎn)時還未跳轉(zhuǎn)成功,代碼片段就已經(jīng)執(zhí)行,導(dǎo)致元素未找到
解決方法:設(shè)置元素等待
(1)隱式等待(推薦使用):在代碼前部分加implicitly_wait()?,整個的程序運行過程中都會有效,都會等待元素加載完成,不需要像sleep一樣每次要設(shè)置一遍。在設(shè)置的時間內(nèi)沒有加載到整個頁面則會報NosuchElementError。
(2)sleep強制等待:不推薦使用,倘若你設(shè)置sleep等待時間設(shè)置太長,元素可能已經(jīng)加載出來了,但是由于你設(shè)置過長,程序會一直等待你設(shè)置的時間過完才執(zhí)行,這樣會影響代碼整體的運行效率。
(3)顯示等待:WebDriverWait()未考慮使用