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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/215122.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBootWeb请求响应之前言及状态码的详细解析

SpringBootWeb请求响应 前言 在上一次的课程中,我们开发了springbootweb的入门程序。 基于SpringBoot的方式开发一个web应用,浏览器发起请求 /hello 后 ,给浏览器返回字符串 “Hello World ~”。 其实呢,是我们在浏览器发起请求…

【算法与数据结构】332、LeetCode重新安排行程

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:本题比较属于困难题目,难点在于完成机票、出发机场和到达机场之间的映射关系,再…

使用yum/dnf管理软件包

本章主要介绍使用 yum 对软件包进行管理。 yum 的介绍搭建yum源创建私有仓库yum客户端的配置yum的基本使用使用第三方yum源 使用rpm安装包时经常会遇到一个问题就是包依赖,如下所示。 [rootrhel03 ~]# rpm -ivh /mnt/AppStream/Packages/httpd-2.4.37-41.modulee…

【三维重建】对极几何

极几何描述了同一场景或者物体的两个视点图像间的几何关系 可以发现P在左右相机的投影点一定在各自的极线上,如果求出极线就能缩小求解对应点的范围。 本质矩阵对规范化摄像机拍摄的两个视点图像间的极几何关系进行代数描述 规范化相机指的是相机的内参…

人工智能_机器学习063_SVR支持向量机_回归拟合天猫双十一销量方程---人工智能工作笔记0103

之前我们用线性回归做过天猫双十一销量预测的数据,现在我们再来用SVR支持向量机来做一下 首先上面是给出了销量,对应2009年到2019年的,销售额 可以看到: X=np.arange(2009,2020)-2008 统一减去2008的话看起来数据比较简单了 y=np.array([0.5,9.36,52,191,350,571,912,1207,1…

使用perl的Tie::File 模块删除文件固定行

使用perl的Tie::File 模块删除文件固定行, 为了说明简单代码中处理的是固定第二行开始的3行长度。下面给出perl代码: #! /usr/bin/perl use v5.14; use Tie::File;if (ARGV 0) {say "请输入一个文件名 !!!";exit 1; }my $filePath $ARGV[0]; tie my ar…

java工程(ajax/axios/postman)向请求头中添加消息

1、问题概述 在项目中我们经常会遇到需要向请求头中添加消息的场景,然后后端通过request.getRequest()或者RequestHeader获取请求头中的消息。 下面提供几种前端向请求头添加消息的方式 2、创建一个springmvc工程用于测试 2.1、创建工程并引入相关包信息 sprin…

C++之STL算法(1)

STL容器算法主要由、、组成;   algorithm主要有遍历、比较、交换、查找、拷贝、修改等; 1.遍历容器for_each for_each()函数用于完成容器遍历,函数参数如下: for_each(_InIt _First, _InIt _Last, _Fn _Func) 形参&#xff1a…

深度学习 Day10——T10数据增强

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 文章目录 前言一、我的环境二、代码实现与执行结果1.引入库2.设置GPU(如果使用的是CPU可以忽略这步)3.导入数据4.查…

Docker基础概念解析:镜像、容器、仓库

当谈到容器化技术时,Docker往往是第一个被提及的工具。Docker的基础概念涵盖了镜像、容器和仓库,它们是理解和使用Docker的关键要素。在这篇文章中,将深入探讨这些概念,并提供更丰富的示例代码,帮助大家更好地理解和应…

智能优化算法应用:基于混合蛙跳算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于混合蛙跳算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于混合蛙跳算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.混合蛙跳算法4.实验参数设定5.算法结果6.…

2023年华为HCIA认证H12-811题库讲解

在VRP平台上,可以通过下面哪种方式返回到上一条历史命令?( ) A、Ctr1U B、Ctr1P C、左光标 D、上光标 试题答案:BD 试题解析:在VRP系统中,ctrlU为自定义快捷键,ct…

DevEco Studio 3.1IDE环境配置(HarmonyOS 3.1)

DevEco Studio 3.1IDE环境配置(HarmonyOS 3.1) 一、安装环境 操作系统: Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、环境安装 IDE下载地址:HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者 IDE的安装就是…

Android---Kotlin 学习002

声明变量 在 Kotlin 中定义一个变量,通过关键字 var 开始。然后是变量名,在“:”后紧跟变量类型。 示例1:声明一个 int 类型的变量 var num:Int 1 示例2:声明一个 String 类型的变量 var str:String "Hello world&quo…

计算机网络——期末考试复习资料

什么是计算机网络 将地理位置不同的具有独立功能的多台计算机及其外部设备通过通信线路和通信设备连接起来;实现资源共享和数据传递的计算机的系统。 三种交换方式 报文交换:路由器转发报文; 电路交换:建立一对一电路 分组交换&a…

2024 年 SEO 现状

搜索引擎优化(SEO)一直以来都是网络知名度和成功的基石。随着我们踏上 2024 年的征程,SEO领域正在经历重大变革,有些变革已经开始,这对企业、创作者和营销人员来说既是挑战也是机遇。 语音搜索 语音搜索曾是一个未来…

可以组成网络的服务器 - 华为OD统一考试(C卷)

OD统一考试(C卷) 分值: 200分 题解: Java / Python / C 题目描述 在一个机房中,服务器的位置标识在n*m的整数矩阵网格中,1表示单元格上有服务器,0表示没有。如果两台服务器位于同一行或者同一列…

HTML常用表单元素使用?

目录 一、常用表单元素使用的关键字二、常用表单元素使用的效果与作用(1)password : 保护用户的隐私(2) email: 输入邮件(比如QQ邮件)(3)、number : 输入框只能输入数字(4)、tel : 常用于输入电话号&#x…

Kubernetes实战(十二)-使用kubeconfig文件管理多套kubernetes(k8s)集群

1 概述 在生产环境中可能不止有一套kubernetes(k8s)集群,面对多套集群,运维人员可以使用kubeconfig文件管理多套kubernetes(k8s)集群,使用 kubeconfig 文件,可以组织集群、用户和命名空间,还可以定义上下文&#xff0…

深入理解模板引擎:解锁 Web 开发的新境界(上)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…