基於appium的移動端自動化測試,密碼鍵盤無法識別問題


基於appium做自動化測試,APP密碼鍵盤無法識別問題解決思路

這個問題的解決思路如下:


  1.針對iOS無序鍵盤:首先,iOS的密碼鍵盤是可識別的,但是,密碼鍵盤一般是無序的。針對這個情況,思路是用Macaca或者appium-inspector來獲取到每個鍵的信息的。首先,定義一個數據字典key_num={},把每個鍵的xpath保存到字典里面去。這樣key_num里面保存的就是key_num[0]="第一個按鍵的xpath路徑",key_num[1]="第二個按鍵的xpath路徑"以此類推,記錄完,整個鍵盤的xpath路徑。然后,通過xpath的值就可以取得該元素的name值,這個值就是該鍵的數字,取name值方式:對象.get_attribute("name")。然后,定義另一個字典keys_num={},來保存每個按鍵對應的xpath和對應的數字。比如:第一個鍵是“6”,就寫keys_num[6]="第一個鍵的xpath",第二個鍵是“4”,keys_num[4]="第二個鍵的xpath",以此類推,記錄完整個鍵盤的數字和對應的xpath。這樣在輸入密碼的時候,只要遍歷密碼,例如:密碼是“666888”,那么密碼的第一值是6,我們就取keys_num[6]的值就可以獲取到“數字6”的xpath,在通過get_element_by_xpath("數字6的xpath")方式就可以獲取到該元素,再用 元素.click()進行點擊,就可以輸入該值了。


  2.針對Android無序且無法識別鍵盤:Android的密碼鍵盤一般是無序而且不可識別的。我們要用到ocr這個技術,大家不要緊張,可以去找相關的ocr類庫,比如用python寫腳本的人就可以找python的ocr類庫,使用很簡單。下面說如何解決密碼鍵盤識別問題。首先,用adb截取密碼鍵盤界面,把鍵盤界面通過ocr來識別,獲取到鍵盤數字的順序,例如:鍵盤的數字順序是“9638527410”,那么我們就可以知道該次彈出的鍵盤第一排是“963”,第一個鍵是“9”,第二個鍵是“6”以此類推。但是,有的人會問了“我們既然無法識別鍵盤,那么如何獲取鍵盤信息呢?”,對,我們只能通過ocr獲取到鍵盤數字排序卻無法獲取到按鍵信息。那么如何點擊呢?接下來,我們打開andorid的“指針位置”這個功能,計算出每個按鍵在屏幕的位置(計算方式:按百分比的方式計算,即:該鍵在屏幕的相對位置)。然后定義字典key_num_x={},key_num_y={}分別將該鍵的坐標記錄下來,例如第一個鍵的值是6那么就寫key_num_x[6]="第一個鍵的x坐標",key_num_y[6]="第一個鍵的y坐標"。以此類推。記錄完所有的按鍵信息。這樣在輸入密碼的時候,只要遍歷密碼,例如:密碼是“666888”,那么密碼的第一值是6,我們就取key_num_x[6]和key_num_y[6]的值,在通過 driver.tap([{x坐標,y坐標}])這個方法就可以點擊了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM