appium安卓app自动化,遇到搜索框无搜索按钮元素时无法搜索的解决方案

如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"}) 
相关推荐
川石课堂软件测试3 天前
使用mock进行接口测试教程
数据库·python·功能测试·测试工具·华为·单元测试·appium
aovenus4 天前
使用Midscene.js和Appium开展移动应用自动化的对比
appium·midscene.js
one day3214 天前
appium
appium
测试开发-学习笔记5 天前
从0开始搭建app的自动化(二)-appium+python
python·appium·自动化
测试员周周10 天前
【Appium 系列】第18节-重试与容错 — 移动端测试的稳定性保障
人工智能·python·功能测试·ui·单元测试·appium·测试用例
测试员周周10 天前
【Appium 系列】第17节-XMind用例转换 — 从思维导图到 YAML
java·服务器·人工智能·单元测试·appium·测试用例·xmind
测试员周周10 天前
【Appium 系列】第20节-测试项目结构设计 — 从脚本到工程
人工智能·数据挖掘·回归·单元测试·appium·测试用例·测试覆盖率
测试员周周11 天前
【Appium 系列】第14节-断言与验证 — Validator 的设计
android·人工智能·python·功能测试·ios·单元测试·appium
测试员周周12 天前
【Appium 系列】第16节-WebView-H5上下文切换 — 混合应用的自动化难点
运维·开发语言·人工智能·功能测试·appium·自动化·测试用例
测试员周周12 天前
【Appium 系列】第13节-混合测试执行器 — API + UI 的协同执行
开发语言·人工智能·python·功能测试·ui·appium·pytest