【柠檬班】遇到搜索栏无搜索按钮怎么办?Python自动化测试专题
本文由柠檬班Python8期,测试开发1期VIP学员孤影原创!
今天,遇到一个比较大的坑。
首先说下由来。
今天写了一条Andriod的自动化测试用例,使用的框架是Appium,语言Python。
因为公司是做奢侈品电商的,所以难免要做app的自动化。
做过android的app测试或者使用Andriod手机买过东西,如果你仔细点,会发现Andriod的电商app中大部分的搜索栏旁边是没有搜索这个按钮的。
输入完文本后,一般通过手机键盘上的搜索按钮进行搜索操作。
今天的这个坑就跟这个有关。
拿我们做ui自化测试的人员来说,搜索栏没有搜索按钮那是要特殊处理的。
先说下另一个坑:
在我写测试用步骤到搜索栏这一块的时候,我很自然的使用了Send_keys()这个方式输入文本。
文本内容为中文,我们的国语中文汉字,比如输入一个 “你好”。
但是你会发现,日志消息打印输入“你好”成功了,但是事实上是搜索栏里仍是空的。
你也可以在appium的inspector尝试一下输入文本操作,看看是否可以。
反正我的不行。
通过反复查资料和自己的尝试明白了。
我们使用appium时,默认使用的是系统也就是手机系统自带的输入法,一般手机系统自带的输入法是不支持Unicode编码方式发送字符串的。
所以我们要做的是将unicodeKeyboard设置为True,设置使用Unicode编码方式发送字符串。
这样你在运行你的脚本的时候你会发现你可以输入中文了。
也可以设置resetKeyboard为true隐藏键盘。
这时候你可以到你的手机系统设置看下,你的输入法默认已经改成了unicode IME了。
这虽然解决了输入的问题,但是也是引发了另一个更坑的问题。
开始说的,搜索栏没有搜索按钮进行点击搜索。
我说的可不仅是搜索栏没有,连你的输入法也是没有的,搜索栏没有键盘也没有都想到的应该是直接回车。
因为我们设置了unicodeKeyboard设置为True,这家伙可是没有键盘显示的。
并且你使用press_keycode(66)回车操作的时候,他会出现先将你输入的文本清空了在进行的回车搜索操作。
所以我改变了方式:
首先,你要安装一个第三方的输入法到本机。
我安装的是搜狗输入法。
然后在我们的脚本上,可以通过driver.available_ime_engines获取到本机(Android手机)的所有输入法。
我的是
[‘com.baidu.input_huawei/.ImeService’,
‘com.sohu.inputmethod.sogou/.SogouIME’,
‘com.qihoo.appstore/com.qihoo360.mobilesafe.pcinput.HandoffIme’,
‘io.appium.settings/.AppiumIME’, ‘io.appium.settings/.UnicodeIME’],。
返回的是一个list,也可以使用adb shell ime list -s 查看。
可以看到不仅包括系统自带的输入法:
百度输入法华为版,还有我安装的第三方搜狗输入法,后面那俩输入法估计都看出来是什么了就不说了。
我只要关心我的最后一个unicode IME和搜狗的输入法。
没有搜索按钮,我们就可以使用搜狗输入法进行回车进行搜索操作。
首先 ,在使用unicode输入法输入中文文本后。
使用os模块进行adb命令切换输入法:
os.system(“adb shell ime set com.sohu.inputmethod.sogou/.SogouIME”)
记得切换后使用sleep等待个一两秒。
重点:必须sleep等待一下。
此时已经切换到了搜狗输入法上。
在使用driver.press_keycode(66)使用键盘的回车操作
在等待停顿一下。
在切换回unicode输入法os.system(“adb shell ime set io.appium.settings/.UnicodeIME”)。
这个时候输入中文也可以了,搜索也可以了。
不过以后遇到这种情况都需要去调用下此方法进行切换。
封装一下就好。
本文由柠檬班学员孤影原创,转载需注明出处!
今天的小分享就到这了,有问题可以+群:927360521 领取100G软件测试学习视频,暗号:简书,群内有各大城市软件测试招聘(北上广深比较多)消息,每周1至周5群都会有免费公开课,笔试面试题分享哒!