柠檬班软件测试自动化测试

【柠檬班】遇到搜索栏无搜索按钮怎么办?Python自动化测试专题

2019-06-06  本文已影响0人  0fdd04f992cd

本文由柠檬班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群都会有免费公开课,笔试面试题分享哒!

上一篇 下一篇

猜你喜欢

热点阅读