当前位置: 首页 > news >正文

如何在自动化脚本中向控件输入文本?

在自动化脚本任务中,我们经常遇到要输入文本的情况,比如自动搜索商品等。这个看起来简单的任务,有时候却并不是很好实现。一般来说只要人工可以手动输入文本的,都可以用脚本实现自动输入文本,比如android.widget.EditText等,下面以冰狐智能辅助作为例子来讲解下具体实现过程。

一、使用粘贴实现输入文本

使用paste函数,粘贴文本,设置文本,返回boolean。

参数:
参数名类型默认值说明
tag/node objectstring/object必填tag如上。或者控件对象
datastring必填粘贴的数据
optionsjson object{type:'set', flag:'', family: [], region: null, fast: false, root:null, widgetIndex: 0, failed:null, duration:500, maxStep:5, beforeWait: 0, afterWait: 0}点击查看family「视频教程」。type值为:'set' 或者 'paste'。 widgetIndex表示点击搜索到的第几个控件,默认为0,0表示第一个,-1表示最后一个依次类推。其它选项如上。

var ret = findView('cn:com.android.EditText');
if (ret.length > 0) {paste(ret.views[0], '谢谢!', {afterWait: 3000});
}
paste('cn:com.android.EditText', '谢谢!', {afterWait: 3000});

二、使用间接方式输入文本

有的时候我们会发现有少许app的android.widget.EditText无法直接使用paste函数来粘贴文本,或者输入框根本就不是EditText。此时我们可以使用先把文本复制到系统,然后再长按控件弹出菜单,点击粘贴按钮把文本自动输入到目标控件中

// 此步骤如果粘贴不成功,则系统会把粘贴的内容自动复制到系统缓存
paste('cn:android.widget.TextView', '粘贴的内容');// 让目标控件处于焦点
click('cn:android.widget.TextView');// 长按目标控件,弹出菜单
click('cn:android.widget.TextView', {isLongClick: true});// 查找粘贴按键并点击
var root = findRoot('txt:粘贴');
if (null != root) {var ret = findView('txt:粘贴', {root: root});if (ret.length > 0) {click(ret.views[0], {click: true});}
}

三、使用输入法输入文本

有时候我们会遇到更变态的情况,使用上述方法均不能实现输入文本,此时就要使用输入法来输入了,冰狐智能辅助自带“Simple IME”输入法,可以直接通过冰狐api输入任意文本和任意动作,非常方便,请按如下步骤完成;

  • 先打开手机设置设置,搜索“输入法”,打开输入法设置后,打开激活“Simple IME”输入法:

  • 调用输入法输入文本的api
1.inputText

输入文本,支持任意文字。

参数:
参数名类型必填说明
textstring必填文本
function main() {ime.inputText('你好');
}

2.inputAction

输入动作,比如输入文本后,输入search命令来执行搜索操作等。

参数:
参数名类型必填说明
actionstring必填输入法动作,支持 done,search,send,go,next,previous
function main() {ime.inputAction('done');
}

四、总结

本文给大家介绍了在自动化脚本中输入文本的三种方法,其中第一和第二种使用的是无障碍技术,第三种是冰狐智能辅助提供的输入法技术,由于各种风控等原因,综合考虑,输入法输入文本输入文本的终极方案,最牛叉的方案,最靠谱的,也是最防检测的、防风控方案。

相关文章:

  • ohttps开启群晖ssl证书自动更新
  • Leetcode76覆盖最小子串
  • 五月份嵌入式面试总结
  • 锐捷交换机STP环路日志信息解读
  • ODB 的安装及使用
  • 前端实现流式输出《后端返回Markdown格式文本,前端输出类似于打字的那种》
  • Systemd基础
  • qtc++ qdebug日志生成
  • 【gRPC】HTTP/2协议,HTTP/1.x中线头阻塞问题由来,及HTTP/2中的解决方案,RPC、Protobuf、HTTP/2 的关系及核心知识点汇总
  • 项目QT+ffmpeg+rtsp(一)——Qt的安装和rtsp的测试
  • python中集合的操作
  • Python 中的 typing.ClassVar 详解
  • 会议分享|高超声速流动测量技术研讨会精彩探析
  • windows下authas调试tomcat
  • 青少年ctf平台应急响应-应急响应1
  • 基于 nvitop+Prometheus+Grafana 的物理资源与 VLLM 引擎服务监控方案
  • 自学嵌入式 day19-数据结构 链表
  • 二水平设计的单次重复
  • 阳台光伏+储能:安科瑞智能计量仪表来助力
  • 学习海康VisionMaster之直方图工具
  • 一个留美学生的思想转向——裘毓麐的《游美闻见录》及其他
  • 上海国际珠宝时尚功能区未来三年如何建设?六大行动将开展
  • 广西壮族自治区党委常委会:坚决拥护党中央对蓝天立进行审查调查的决定
  • 中国物流集团等10家央企11名领导人员职务任免
  • 李峰已任上海青浦区委常委
  • 秘鲁总统任命前司法部长阿拉纳为新总理