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"}) 

最近更新

  1. TCP协议是安全的吗?

    2023-12-12 06:48:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-12 06:48:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-12 06:48:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-12 06:48:02       20 阅读

热门阅读

  1. 【Kotlin】静态方法

    2023-12-12 06:48:02       36 阅读
  2. Kotlin之for循环的具体使用说明

    2023-12-12 06:48:02       39 阅读
  3. axios的使用

    2023-12-12 06:48:02       37 阅读
  4. PHP和go搭建分布式

    2023-12-12 06:48:02       36 阅读
  5. 06-微服务架构之微服务设计指导书

    2023-12-12 06:48:02       41 阅读
  6. 考研真题C语言

    2023-12-12 06:48:02       37 阅读
  7. Ansible hanlder是啥?Ansible Block是啥?

    2023-12-12 06:48:02       34 阅读
  8. 02.类模板

    2023-12-12 06:48:02       25 阅读