Appium+python自動化(十三)- 輸入中文 - 一次填坑記(超詳解)

簡介

    不管你在哪裏,在作什麼都會遇到不少坑,這些坑有些事別人挖的,有些是本身挖的。別人挖的叫坑人,本身挖的叫自殺,兒子挖的叫坑爹。所以在作app自動化道路上也不會是一路順風的,你會踩不少坑,這些坑和你就是你死我活的節奏,不是坑把你埋了,就是你把坑填了。因爲我們都是黃皮膚的中國人用的大部分都是中文的app,而人家老外都是白皮膚藍眼睛,用的是英文的APP,人家這個問題能夠忽略。咱們卻不能夠的,必須面對的。因此首先宏哥要帶小夥伴們解決中文輸入的問題! html

你能走多遠,取決於你填坑能力有多強

微博上看到一張圖:python

 

01android

在你的計劃中,將來目標是清晰可見的,中間一片坦途,只須要稍微用點力,就能夠順利達成。web

但實際上呢?服務器

風雨,陡壁,深淵……一路艱難險阻,處處都是坑,最關鍵是,目之所及全是困難,連目標的影子都看不見!微信

能夠說很是形象了!咱們的生活不就是這樣嗎?app

成長的路上,老是充滿了各類「坑」,而你能走多遠,取決於你「填坑」的能力有多強。工具

02學習

「爲何你老是下班這麼晚?」測試

「由於要改的Bug太多了啊。」

「那爲何跟你同組的其餘同事很早就下班了?就你一我的老是走不了?」

「沒辦法啊,太複雜的Bug他們改不了,只能我去解決,否則爲何我月薪2萬,他們只有1萬?」

「……好吧。」

沒錯,工做中就是這樣。

遇到問題,能解決問題的那我的,永遠是最被須要的人,而由於被須要,不可或缺,因此才能拿到高薪,得到更好的我的發展。

改不了的Bug,搞不定的客戶,談不下來的項目……咱們習慣性求助於咱們的上級領導,而這彷佛也解釋了,爲何他是上級領導?由於他能解決咱們解決不了的問題。

在職場,你的核心競爭力,在於你「填坑」的能力,是否能填別人填不了的坑。

  好了,故事就講到這裏吧。言歸正傳,本篇就由宏哥把前邊留有懸念的中文輸入問題的坑,帶着小夥伴們一塊兒把這個坑填平它,KO它。

  宏哥思路:宏哥將會經過屏蔽軟鍵盤,繞過手機的軟鍵盤方法,解決中文輸入的問題。

一、定位搜索

一、打開淘寶點搜索按鈕,進入到搜索頁面

 

 

二、而後定位到搜索框後用sendkeys方法輸入「hongge」,這裏定位元素用第四篇講的uiautomatorviewer工具就能夠了

 

 

三、實例代碼

 

四、運行後夜神模擬器、appium、代碼的運行過程以下(拼音或者英文),請小夥伴們和宏哥一塊兒仔細看是否是搜索框輸入了:hongge 拼音

二、運行腳本

一、首先要確認手機上的輸入法是用的什麼輸入法,若是默認是中文的輸入法,啓動後會出現下面狀況,沒法輸入成功

    二、因而能夠先把手機上的輸入法改爲英文的狀態,這樣就能夠輸入英文字符串了。那麼問題來了,若是想輸入中文的字符串呢?如何解決。。。

三、屏蔽軟鍵盤

一、經過前面的操做,大概能夠知道,在APP裏面輸入字符串是調用的軟鍵盤輸入的,有沒辦法像selenium作web自動化時候同樣,直接sendkeys繞過鍵盤輸入呢?

二、因而能夠想辦法屏蔽軟鍵盤,只需在desired_caps{}設置裏面加兩個參數(注意了,注意力,注意力,能不能填坑就看這裏啊!!!),若是直接跟隨宏哥的小夥伴們直接把註釋去掉了,就能夠。

 

 

 

三、unicodeKeyboard是使用unicode編碼方式發送字符串

四、resetKeyboard是將鍵盤隱藏起來

四、輸入中文字符

一、將上面代碼改爲輸入中文u「北京-宏哥」,而後運行腳本,在手機上查看結果。(python2中文前面要加個u,python3的能夠忽略)

二、運行後夜神模擬器、appium、代碼的運行過程以下:請小夥伴們和宏哥一塊兒仔細看是否是搜索框輸入了:北京-宏哥  中文漢字

 

五、參考代碼

# coding=utf-8 # 1.先設置編碼,utf-8可支持中英文,如上,通常放在第一行 # 2.註釋:包括記錄建立時間,建立人,項目名稱。 ''' Created on 2019-7-04 @author: 北京-宏哥   QQ交流羣:707699217 Project:學習和使用appium自動化測試-輸入中文 - 一次填坑記 ''' # 3.導入模塊 from appium import webdriver import time desired_caps = {} desired_caps['platformName'] = 'Android' #android的apk仍是IOS的ipa desired_caps['platformVersion'] = '8.0' #android系統的版本號 desired_caps['deviceName'] = '127.0.0.1:62001' #手機設備名稱,經過adb devices 查看 desired_caps['appPackage'] = 'com.taobao.taobao' #apk的包名 desired_caps['appActivity'] = 'com.taobao.tao.welcome.Welcome' #apk的launcherActivity desired_caps['unicodeKeyboard'] = True #使用unicodeKeyboard的編碼方式來發送字符串 desired_caps['resetKeyboard'] = True #將鍵盤給隱藏起來 driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) #啓動服務器地址,後面跟的是手機信息 # 休眠五秒等待頁面加載完成 time.sleep(5) driver.find_element_by_id("com.taobao.taobao:id/home_searchedit").click() time.sleep(3) driver.find_element_by_id("com.taobao.taobao:id/searchEdit").click() driver.find_element_by_id("com.taobao.taobao:id/searchEdit").send_keys(u"北京-宏哥")

六、小結

一、若是在輸入中文的時候,手機遇到顯示中文字符爲亂碼時:

二、解決辦法:前面加上「#-*-coding:gb18030-*-」 以下圖所示:


三、還原設置

(1)當運行上面的腳本後,發現手動去輸入時候,沒法調出軟鍵盤了,如何恢復呢?

(2)打開手機設置,找到輸入法設置選項,會發現默認的輸入法被改爲appium的輸入法了。因此只需把這裏的設置,恢復成原來輸入法就OK拉。

  在實現目標的路上,遇到坑很正常,比臨坑痛哭更重要的是,學會把坑填好,繼續走下去。最後祝各位小夥伴們填坑順利,人人都是填坑小能手!!!

  您的確定就是我進步的動力。支持宏哥的朋友們和宏哥的宏粉記得點波 推薦 哦!!!

我的公衆號

微信羣

原文出處:https://www.cnblogs.com/du-hong/p/11131802.html

相關文章
相關標籤/搜索