简介

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

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

微博上看到一张图:

01

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

但实际上呢?

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

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

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

02

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

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

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

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

“……好吧。”

没错,工作中就是这样。

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

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

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

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

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

1、定位搜索

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

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

3、实例代码

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

 
5、参考代码
 
 # coding=utf-
# .先设置编码,utf-8可支持中英文,如上,一般放在第一行 # .注释:包括记录创建时间,创建人,项目名称。
'''
Created on --
@author: 北京-宏哥 QQ交流群:
Project:学习和使用appium自动化测试-输入中文 - 一次填坑记
'''
# .导入模块
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()
driver.find_element_by_id("com.taobao.taobao:id/home_searchedit").click()
time.sleep()
driver.find_element_by_id("com.taobao.taobao:id/searchEdit").click() driver.find_element_by_id("com.taobao.taobao:id/searchEdit").send_keys(u"hongge")

2、运行脚本

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

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

3、屏蔽软键盘

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

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

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

4、resetKeyboard是将键盘隐藏起来

4、输入中文字符

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

 

2、运行后夜神模拟器、appium、代码的运行过程如下:请小伙伴们和宏哥一起仔细看是不是搜索框输入了:北京-宏哥  中文汉字

5、参考代码

# coding=utf-
# .先设置编码,utf-8可支持中英文,如上,一般放在第一行 # .注释:包括记录创建时间,创建人,项目名称。
'''
Created on --
@author: 北京-宏哥 QQ交流群:
Project:学习和使用appium自动化测试-输入中文 - 一次填坑记
'''
# .导入模块
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()
driver.find_element_by_id("com.taobao.taobao:id/home_searchedit").click()
time.sleep()
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、如果在输入中文的时候,手机遇到显示中文字符为乱码时:

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

3、还原设置

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

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

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

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

个人公众号

微信群

Appium+python自动化(十三)- 输入中文 - 一次填坑记(超详解)的更多相关文章

  1. Appium + Python自动化3 - 输入中文

    在做app自动化过程中会踩很多坑,咱们都是用中文的app,所以首先要解决中文输入的问题!本篇通过屏蔽软键盘,绕过手机的软键盘方法,解决中文输入问题. 一.定位搜索 1.打开淘宝点击搜索按钮,进入搜索页 ...

  2. Appium+python自动化7-输入中文

    前言 在做app自动化过程中会踩很多坑,咱们都是用的中文的app,所以首先要解决中文输入的问题! 本篇通过屏蔽软键盘,绕过手机的软键盘方法,解决中文输入问题. 一.定位搜索 1.打开淘宝点搜索按钮,进 ...

  3. Appium+python自动化7-输入中文【转载】

    前言 在做app自动化过程中会踩很多坑,咱们都是用的中文的app,所以首先要解决中文输入的问题! 本篇通过屏蔽软键盘,绕过手机的软键盘方法,解决中文输入问题. 一.定位搜索 1.打开淘宝点搜索按钮,进 ...

  4. Appium+python自动化(八)- 初识琵琶女Appium(千呼万唤始出来,犹抱琵琶半遮面)- 下(超详解)

    ​简介 通过上一篇宏哥给各位小伙伴们的引荐,大家移动对这位美女有了深刻的认识,而且她那高超的技艺和婀娜的身姿久久地浮现在你的脑海里,是不是这样呢???不要害羞直接告诉宏哥:是,就对了.宏哥要的就是这个 ...

  5. Appium+python自动化(七)- 初识琵琶女Appium(千呼万唤始出来,犹抱琵琶半遮面)- 上(超详解)

    简介 “千呼万唤始出来,犹抱琵琶半遮面”,经过前边的各项准备工作,终于才把appium这位琵琶女请出来.那么下边就由宏哥给各位看官.小伙伴们和童鞋们来引荐这位美女(帅哥).这一篇主要是对前边的内容做一 ...

  6. python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)

    简介 有些 post 的请求参数是 json 格式的,这个前面发送post 请求里面提到过,需要导入 json模块处理.现在企业公司一般常见的接口因为json数据容易处理,所以绝大多数返回数据也是 j ...

  7. python接口自动化(四十)- logger 日志 - 下(超详解)

    简介 按照上一篇的计划,这一篇给小伙伴们讲解一下:(1)多模块使用logging,(2)通过文件配置logging模块,(3)自己封装一个日志(logging)类.可能有的小伙伴在这里会有个疑问一个l ...

  8. appium+python自动化61-中文输入乱码问题解决

    前言 在夜神模拟器上输入中文,发现是乱码,将unicodeKeyboard和resetKeyboard参数设置为True了,发现还是没法解决. 打开手机设置语言和输入法,发现找不到Appium And ...

  9. Appium+python自动化8-Appium Python API

    Appium+python自动化8-AppiumPython API   前言: Appium Python API全集,不知道哪个大神整理的,这里贴出来分享给大家. 1.contexts conte ...

随机推荐

  1. 微服务实践之路--RPC

    微服务实践之路--RPC 重点来了,本文全面阐述一下我们的RPC是怎么实现并如何使用的,跟Kubernetes和Openstack怎么结合. 在选型一文中说到我们选定的RPC框架是Apache Thr ...

  2. the solution about "messy code" in elicpse

    I use the Elicpse IDE to develope the ansdroid app.Sometime encounter the messy code in the Elicpse ...

  3. spring boot 集成mybatis报错Missing artifact

    1. pom文件中的oracle依赖提示Missing artifact,需要手动下载并导入maven参考 oracle依赖下载地址 (ojdbc6.jar) cd到下载的ojdbc6.jar所在路径 ...

  4. WPF 4 DataGrid 控件(基本功能篇)

    原文:WPF 4 DataGrid 控件(基本功能篇)      提到DataGrid 不管是网页还是应用程序开发都会频繁使用.通过它我们可以灵活的在行与列间显示各种数据.本篇将详细介绍WPF 4 中 ...

  5. WPF编游戏系列 之六 动画效果(1)

    原文:WPF编游戏系列 之六 动画效果(1)        本篇主要针对界面进行动画效果处理.首先在打开或关闭界面时,使其产生动态效果而不是生硬的显示或消失(如下图).其次在鼠标放到关闭窗口图标上时, ...

  6. WPF 创建无边框的圆角窗口

    原文:WPF 创建无边框的圆角窗口 如题所述,在WPF中要创建一个没有边框且为圆角的窗体,有如下几步工作要进行: 第一步:去掉窗体默认样式的边框 首先将窗体的背景设为透明,将允许透明的属性设置为Tru ...

  7. 微信小程序把玩(十二)text组件

    原文:微信小程序把玩(十二)text组件 通常文本设置要不在wxml中设置,再要不就是通过weml绑定在js中设置文字. wxml <view > <text>我是文本组件&l ...

  8. 微信小程序把玩(十三)progress组件

    原文:微信小程序把玩(十三)progress组件 进度条描述的是一种加载的状态,比如软件升级下载进度, 视频,图片下载进度- 主要属性: wxml <progress percent=" ...

  9. 关于XML异步

    记得有次面试的时候面试官问我知道AJAX吗?当时我回答听过但是没去看过,当时只是知道它和异步的概念有关. 经过查资料,弄明白了些头绪,下面就把我自己对AJAX的理解说说. 大多数浏览器是支持XMLHt ...

  10. Linux简单文本处理

    tr命令:tr [option] set1 [set2] 删除或者替换set1中的字符在文本表示这个问题中,windows系统下,\r\n为换行:而linux系统下,\n为换行.win->lin ...