Appium+python自动化(十三)- 输入中文 - 一次填坑记(超详解)

系统 1510 0

简介

    无论你在哪里,在做什么都会遇到很多坑,这些坑有些事别人挖的,有些是自己挖的。别人挖的叫坑人,自己挖的叫自杀,儿子挖的叫坑爹。因此在做app自动化道路上也不会是一帆风顺的,你会踩很多坑,这些坑和你就是你死我活的节奏,不是坑把你埋了,就是你把坑填了。由于咱们都是黄皮肤的中国人用的大部分都是中文的app,而人家老外都是白皮肤蓝眼睛,用的是英文的APP,人家这个问题可以忽略。我们却不可以的,必须面对的。所以首先宏哥要带小伙伴们解决中文输入的问题! 

你能走多远,取决于你填坑能力有多强

微博上看到一张图:

Appium+python自动化(十三)- 输入中文 - 一次填坑记(超详解)_第1张图片

 

01

在你的计划中,未来目标是清晰可见的,中间一片坦途,只需要稍微用点力,就可以顺利达成。

但实际上呢?

风雨,陡壁,深渊……一路艰难险阻,到处都是坑,最关键是,目之所及全是困难,连目标的影子都看不见!

可以说非常形象了!我们的生活不就是这样吗?

成长的路上,总是充满了各种“坑”,而你能走多远,取决于你“填坑”的能力有多强。

02

“为什么你总是下班这么晚?”

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

“那为什么跟你同组的其他同事很早就下班了?就你一个人总是走不了?”

“没办法啊,太复杂的Bug他们改不了,只能我去解决,不然为什么我月薪2万,他们只有1万?”

“……好吧。”

没错,工作中就是这样。

遇到问题,能解决问题的那个人,永远是最被需要的人,而因为被需要,不可或缺,所以才能拿到高薪,获得更好的个人发展。

改不了的Bug,搞不定的客户,谈不下来的项目……我们习惯性求助于我们的上级领导,而这似乎也解释了,为什么他是上级领导?因为他能解决我们解决不了的问题。

在职场,你的核心竞争力,在于你“填坑”的能力,是否能填别人填不了的坑。

  好了,故事就讲到这里吧。言归正传,本篇就由宏哥把前边留有悬念的中文输入问题的坑,带着小伙伴们一起把这个坑填平它,KO它。

  宏哥思路:宏哥将会通过屏蔽软键盘,绕过手机的软键盘方法,解决中文输入的问题。

1、定位搜索

1、打开淘宝点搜索按钮,进入到搜索页面

  Appium+python自动化(十三)- 输入中文 - 一次填坑记(超详解)_第2张图片

 

2、然后定位到搜索框后用sendkeys方法输入“hongge”,这里定位元素用第四篇讲的uiautomatorviewer工具就可以了

 

Appium+python自动化(十三)- 输入中文 - 一次填坑记(超详解)_第3张图片

 

3、实例代码

  Appium+python自动化(十三)- 输入中文 - 一次填坑记(超详解)_第4张图片

4、运行后夜神模拟器、appium、代码的运行过程如下(拼音或者英文),请小伙伴们和宏哥一起仔细看是不是搜索框输入了:hongge 拼音

2、运行脚本

1、首先要确认手机上的输入法是用的什么输入法,如果默认是中文的输入法,启动后会出现下面情况,无法输入成功

    2、于是可以先把手机上的输入法改成英文的状态,这样就可以输入英文字符串了。那么问题来了,如果想输入中文的字符串呢?如何解决。。。

3、屏蔽软键盘

1、通过前面的操作,大概可以知道,在APP里面输入字符串是调用的软键盘输入的,有没办法像selenium做web自动化时候一样,直接sendkeys绕过键盘输入呢?

2、于是可以想办法屏蔽软键盘,只需在desired_caps{}设置里面加两个参数( 注意了,注意力,注意力,能不能填坑就看这里啊!!! ),如果直接跟随宏哥的小伙伴们直接把注释去掉了,就可以。

 

  Appium+python自动化(十三)- 输入中文 - 一次填坑记(超详解)_第6张图片

 

3、unicodeKeyboard是使用unicode编码方式发送字符串

4、resetKeyboard是将键盘隐藏起来

4、输入中文字符

1、将上面代码改成输入中文u“北京-宏哥”,然后运行脚本,在手机上查看结果。(python2中文前面要加个u,python3的可以忽略)

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自动化(十三)- 输入中文 - 一次填坑记(超详解)_第8张图片

2、解决办法:前面加上“#-* -coding:gb18030-* -” 如下图所示:


3、还原设置

(1)当运行上面的脚本后,发现手动去输入时候,无法调出软键盘了,如何恢复呢?

(2)打开手机设置,找到输入法设置选项,会发现默认的输入法被改成appium的输入法了。所以只需把这里的设置,恢复成原来输入法就OK拉。

  在实现目标的路上,遇到坑很正常,比临坑痛哭更重要的是,学会把坑填好,继续走下去。最后祝各位小伙伴们填坑顺利,人人都是填坑小能手!!!

  您的肯定就是我进步的动力。 支持宏哥的朋友们和宏哥的宏粉记得点波  推荐   哦!!!

个人公众号

Appium+python自动化(十三)- 输入中文 - 一次填坑记(超详解)_第10张图片

微信群

Appium+python自动化(十三)- 输入中文 - 一次填坑记(超详解)_第11张图片


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论