简介
无论你在哪里, 在做什么都会遇到很多坑, 这些坑有些事别人挖的, 有些是自己挖的. 别人挖的叫坑人, 自己挖的叫自杀, 儿子挖的叫坑爹. 因此在做 App 自动化道路上也不会是一帆风顺的, 你会踩很多坑, 这些坑和你就是你死我活的节奏, 不是坑把你埋了, 就是你把坑填了. 由于咱们都是黄皮肤的中国人用的大部分都是中文的 App, 而人家老外都是白皮肤蓝眼睛, 用的是英文的 App, 人家这个问题可以忽略. 我们却不可以的, 必须面对的. 所以首先宏哥要带小伙伴们解决中文输入的问题!
你能走多远, 取决于你填坑能力有多强
微博上看到一张图:
01
在你的计划中, 未来目标是清晰可见的, 中间一片坦途, 只需要稍微用点力, 就可以顺利达成.
但实际上呢?
风雨, 陡壁, 深渊...... 一路艰难险阻, 到处都是坑, 最关键是, 目之所及全是困难, 连目标的影子都看不见!
可以说非常形象了! 我们的生活不就是这样吗?
成长的路上, 总是充满了各种 "坑", 而你能走多远, 取决于你 "填坑" 的能力有多强.
- 02
- "为什么你总是下班这么晚?"
- "因为要改的 Bug 太多了啊."
- "那为什么跟你同组的其他同事很早就下班了? 就你一个人总是走不了?"
- "没办法啊, 太复杂的 Bug 他们改不了, 只能我去解决, 不然为什么我月薪 2 万, 他们只有 1 万?"
- "...... 好吧."
没错, 工作中就是这样.
遇到问题, 能解决问题的那个人, 永远是最被需要的人, 而因为被需要, 不可或缺, 所以才能拿到高薪, 获得更好的个人发展.
改不了的 Bug, 搞不定的客户, 谈不下来的项目...... 我们习惯性求助于我们的上级领导, 而这似乎也解释了, 为什么他是上级领导? 因为他能解决我们解决不了的问题.
在职场, 你的核心竞争力, 在于你 "填坑" 的能力, 是否能填别人填不了的坑.
好了, 故事就讲到这里吧. 言归正传, 本篇就由宏哥把前边留有悬念的中文输入问题的坑, 带着小伙伴们一起把这个坑填平它, KO 它.
宏哥思路: 宏哥将会通过屏蔽软键盘, 绕过手机的软键盘方法, 解决中文输入的问题.
1, 定位搜索
1, 打开淘宝点搜索按钮, 进入到搜索页面
2, 然后定位到搜索框后用 sendkeys 方法输入 "hongge", 这里定位元素用第四篇讲的 uiautomatorviewer 工具就可以了
3, 实例代码
4, 运行后夜神模拟器, appium, 代码的运行过程如下 (拼音或者英文), 请小伙伴们和宏哥一起仔细看是不是搜索框输入了: hongge 拼音
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"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-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, 如果在输入中文的时候, 手机遇到显示中文字符为乱码时:
2, 解决办法: 前面加上 "#-*-coding:gb18030-*-" 如下图所示:
3, 还原设置
(1) 当运行上面的脚本后, 发现手动去输入时候, 无法调出软键盘了, 如何恢复呢?
(2) 打开手机设置, 找到输入法设置选项, 会发现默认的输入法被改成 appium 的输入法了. 所以只需把这里的设置, 恢复成原来输入法就 OK 拉.
在实现目标的路上, 遇到坑很正常, 比临坑痛哭更重要的是, 学会把坑填好, 继续走下去. 最后祝各位小伙伴们填坑顺利, 人人都是填坑小能手!!!
您的肯定就是我进步的动力. 支持宏哥的朋友们和宏哥的宏粉记得点波推荐哦!!!
个人公众号
微信群
来源: https://www.cnblogs.com/du-hong/p/11131802.html