天天看點

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

簡介

    無論你在哪裡,在做什麼都會遇到很多坑,這些坑有些事别人挖的,有些是自己挖的。别人挖的叫坑人,自己挖的叫自殺,兒子挖的叫坑爹。是以在做app自動化道路上也不會是一帆風順的,你會踩很多坑,這些坑和你就是你死我活的節奏,不是坑把你埋了,就是你把坑填了。由于咱們都是黃皮膚的中國人用的大部分都是中文的app,而人家老外都是白皮膚藍眼睛,用的是英文的APP,人家這個問題可以忽略。我們卻不可以的,必須面對的。是以首先宏哥要帶小夥伴們解決中文輸入的問題! 

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

微網誌上看到一張圖:

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

01

在你的計劃中,未來目标是清晰可見的,中間一片坦途,隻需要稍微用點力,就可以順利達成。

但實際上呢?

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

可以說非常形象了!我們的生活不就是這樣嗎?

成長的路上,總是充滿了各種“坑”,而你能走多遠,取決于你“填坑”的能力有多強。

02

“為什麼你總是下班這麼晚?”

“因為要改的Bug太多了啊。”

“那為什麼跟你同組的其他同僚很早就下班了?就你一個人總是走不了?”

“沒辦法啊,太複雜的Bug他們改不了,隻能我去解決,不然為什麼我月薪2萬,他們隻有1萬?”

“……好吧。”

沒錯,工作中就是這樣。

遇到問題,能解決問題的那個人,永遠是最被需要的人,而因為被需要,不可或缺,是以才能拿到高薪,獲得更好的個人發展。

改不了的Bug,搞不定的客戶,談不下來的項目……我們習慣性求助于我們的上級上司,而這似乎也解釋了,為什麼他是上級上司?因為他能解決我們解決不了的問題。

在職場,你的核心競争力,在于你“填坑”的能力,是否能填别人填不了的坑。

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

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

1、定位搜尋

1、打開淘寶點搜尋按鈕,進入到搜尋頁面

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

2、然後定位到搜尋框後用sendkeys方法輸入“hongge”,這裡定位元素用第四篇講的uiautomatorviewer工具就可以了

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

3、執行個體代碼

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

4、運作後夜神模拟器、appium、代碼的運作過程如下(拼音或者英文),請小夥伴們和宏哥一起仔細看是不是搜尋框輸入了:hongge 拼音

5、參考代碼

1 # coding=utf-8
 2 # 1.先設定編碼,utf-8可支援中英文,如上,一般放在第一行
 3 
 4 # 2.注釋:包括記錄建立時間,建立人,項目名稱。
 5 \'\'\'
 6 Created on 2019-7-04
 7 @author: 北京-宏哥   QQ交流群:707699217
 8 Project:學習和使用appium自動化測試-輸入中文 - 一次填坑記
 9 \'\'\'
10 # 3.導入子產品
11 from appium import webdriver
12 import time
13 desired_caps = {}
14 desired_caps[\'platformName\'] = \'Android\'   #android的apk還是IOS的ipa
15 desired_caps[\'platformVersion\'] = \'8.0\'  #android系統的版本号
16 desired_caps[\'deviceName\'] = \'127.0.0.1:62001\'    #手機裝置名稱,通過adb devices  檢視
17 desired_caps[\'appPackage\'] = \'com.taobao.taobao\'  #apk的包名
18 desired_caps[\'appActivity\'] = \'com.taobao.tao.welcome.Welcome\'  #apk的launcherActivity
19 #desired_caps[\'unicodeKeyboard\'] = True   #使用unicodeKeyboard的編碼方式來發送字元串
20 #desired_caps[\'resetKeyboard\'] = True   #将鍵盤給隐藏起來
21 driver = webdriver.Remote(\'http://127.0.0.1:4723/wd/hub\', desired_caps) #啟動伺服器位址,後面跟的是手機資訊
22 # 休眠五秒等待頁面加載完成
23 time.sleep(5)
24 driver.find_element_by_id("com.taobao.taobao:id/home_searchedit").click()
25 time.sleep(3)
26 driver.find_element_by_id("com.taobao.taobao:id/searchEdit").click()
27 
28 driver.find_element_by_id("com.taobao.taobao:id/searchEdit").send_keys(u"hongge")
      

2、運作腳本

1、首先要确認手機上的輸入法是用的什麼輸入法,如果預設是中文的輸入法,啟動後會出現下面情況,無法輸入成功

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

    2、于是可以先把手機上的輸入法改成英文的狀态,這樣就可以輸入英文字元串了。那麼問題來了,如果想輸入中文的字元串呢?如何解決。。。

3、屏蔽軟鍵盤

1、通過前面的操作,大概可以知道,在APP裡面輸入字元串是調用的軟鍵盤輸入的,有沒辦法像selenium做web自動化時候一樣,直接sendkeys繞過鍵盤輸入呢?

2、于是可以想辦法屏蔽軟鍵盤,隻需在desired_caps{}設定裡面加兩個參數(注意了,注意力,注意力,能不能填坑就看這裡啊!!!),如果直接跟随宏哥的小夥伴們直接把注釋去掉了,就可以。

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

3、unicodeKeyboard是使用unicode編碼方式發送字元串

4、resetKeyboard是将鍵盤隐藏起來

4、輸入中文字元

1、将上面代碼改成輸入中文u“北京-宏哥”,然後運作腳本,在手機上檢視結果。(python2中文前面要加個u,python3的可以忽略)

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

2、運作後夜神模拟器、appium、代碼的運作過程如下:請小夥伴們和宏哥一起仔細看是不是搜尋框輸入了:北京-宏哥  中文漢字

5、參考代碼

# 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"北京-宏哥")      

6、小結

1、如果在輸入中文的時候,手機遇到顯示中文字元為亂碼時:

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

2、解決辦法:前面加上“#-*-coding:gb18030-*-” 如下圖所示:

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

3、還原設定

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

(2)打開手機設定,找到輸入法設定選項,會發現預設的輸入法被改成appium的輸入法了。是以隻需把這裡的設定,恢複成原來輸入法就OK拉。

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

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

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

個人公衆号

微信群