如XX头条,搜索框后面有“搜索”按钮,这样实现搜索操作较为方便。
但有些app没有设置该搜索按钮,初学者就要花点时间去学习怎么实现该功能了,如下图。
这时候如果定位搜索框,再点击操作,再输入文本后,再使用driver.press_keycode(66),发现无法实现搜索功能,如图,只实现了输入文本功能。
目前学习到一种方法,如下:
1、手机下载搜狗输入法
在手机应用商店下载一个搜狗输入法,在电脑打开cmd窗口,输入命令
adb shell ime list -s
如图,会出现自己手机现有的输入法
2、在pycharm编写的脚本中,导入os库
定义一个变量,如:
sougou='adb shell ime set com.sohu.inputmethod.sogou/.SogouIME'
3、利用os库切换输入法至搜狗输入法,执行driver.press_keycode(66)
定位搜索框元素后,再点击操作,再输入文本操作,再通过os转换输入法,再执行driver.press_keycode(66),便可以执行搜索操作
小白代码如下:
from appium import webdriver
import time
from selenium.webdriver.common.by import By
import os
# 定义参数
desired_caps = {'platformName': 'Android', # 被测手机是安卓'platformVersion': '11', # 手机安卓版本'deviceName': '安卓', # 设备名,安卓手机可以随意填写'appPackage': 'com.netease.cc', # 启动APP Package名称'appActivity': 'com.netease.cc.appstart.CCMain', # 启动Activity名称'unicodeKeyboard':True, # 使用自带输入法,输入中文时填True'resetKeyboard': True, # 执行完程序恢复原来输入法'noReset': True, # 不要重置App'newCommandTimeout': 6000,'automationName' : 'UiAutomator2'
}
# 定义sougou变量
sougou='adb shell ime set com.sohu.inputmethod.sogou/.SogouIME'
# 连接Appium Server,初始化自动化环境
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# 设置时间等待,避免找不到元素报错
driver.implicitly_wait(10)
time.sleep(9)
# 点击首页
driver.find_element(by=By.XPATH, value='//android.widget.TextView[@text="首页"]').click()
# 点击搜索框,输入主播昵称
driver.find_element(by=By.ID, value='com.netease.cc:id/hot_word').click()
# 转换为搜狗输入法
os.system(sougou)
# 在搜索框输入主播昵称
driver.find_element(by=By.ID, value='com.netease.cc:id/et_search_content').send_keys('power1')
# 实现手机键盘自带搜索操作
driver.press_keycode(66)
time.sleep(3)
# 结束
driver.quit()
4.如果切换键盘之后还是没有反应,可以试试如下方法,我在实验后是生效的
driver.execute_script("mobile:performEditorAction", {"action": "search"})