如何在自动化脚本中向控件输入文本?
在自动化脚本任务中,我们经常遇到要输入文本的情况,比如自动搜索商品等。这个看起来简单的任务,有时候却并不是很好实现。一般来说只要人工可以手动输入文本的,都可以用脚本实现自动输入文本,比如android.widget.EditText等,下面以冰狐智能辅助作为例子来讲解下具体实现过程。
一、使用粘贴实现输入文本
使用paste函数,粘贴文本,设置文本,返回boolean。
参数:
参数名 | 类型 | 默认值 | 说明 |
---|---|---|---|
tag/node object | string/object | 必填 | tag如上。或者控件对象 |
data | string | 必填 | 粘贴的数据 |
options | json 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
输入文本,支持任意文字。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
text | string | 必填 | 文本 |
function main() {ime.inputText('你好');
}
2.inputAction
输入动作,比如输入文本后,输入search命令来执行搜索操作等。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
action | string | 必填 | 输入法动作,支持 done,search,send,go,next,previous |
function main() {ime.inputAction('done');
}
四、总结
本文给大家介绍了在自动化脚本中输入文本的三种方法,其中第一和第二种使用的是无障碍技术,第三种是冰狐智能辅助提供的输入法技术,由于各种风控等原因,综合考虑,输入法输入文本输入文本的终极方案,最牛叉的方案,最靠谱的,也是最防检测的、防风控方案。