自动化脚本如何编写?
Posted Cydia
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动化脚本如何编写?相关的知识,希望对你有一定的参考价值。
先看一下在触动精灵中名叫moveTo的API,
它的用法如下: moveTo(x1,y1,x2,y2,step,ms,index,stop)
参数类型必填说明
x1number是屏幕起点横坐标
y1number是屏幕起点纵坐标
x2number是屏幕终点横坐标
y2number是屏幕终点纵坐标
stepnumber否滑动速度,不写默认为 10 px
msnumber否弹起时间,不写默认为 50 毫秒
indextable/number否手指序号,仅支持函数库 v1.3.0 及其以上版本默认不写随机手指序号,推荐使用 1 - 9
stopboolean否是否解决惯性滑动,仅支持函数库 v1.3.1 及其以上版本默认 false,true - 精准滑动,解决惯性问题
那么现在我们就利用这个来实现刷视频吧,
先新建一个demo.lua文件,
然后输入一下代码
require "TSLib" -- 引入TSLib库
moveTo(100,900,100,90,20,70,1) -- 滑动屏幕
很简单,就两行代码,现在我们就来把这个脚本上传到触动精灵里面
上面的功能是用Lua语言开发的一个微信自动抢红包lua脚本,然后再结合触动精灵给予的脚本支持产生的效果。
Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
Lua的应用场景:
游戏开发
独立应用脚本
Web 应用脚本
扩展和数据库插件如:mysql Proxy 和 MySQL
WorkBench
安全系统,如入侵检测系统
触动精灵的底层是 Lua 脚本语言,支持 Lua 5.2.3 版本的所有语法与基本函数,并在其的基础上添加了一些扩展函数,用于取色、找色、找图、发送触摸事件等高级功能的实现只要能够在手机上完成的人为操作,触动精灵都可以代替完成,不仅省力,而且高效。
触动精灵的应用场景:
编写自己App的脚本完成自动化测试
开挂刷机
微信机器人(包括开发任意应用的机器人)
因此我们可以轻易做出上面效果图的功能,但是需要移动设备必须是以下其一:
(root)越狱的ios设备
Root权限的android设备
具有Root权限的Android模拟器
提醒:Android与iOS兼容大部分函数。
模拟器连接编辑器比较麻烦,具体操作请查看官方文档。推荐使用天天模拟器,具有别的模拟器不具备的特性。
开发所需的必备工具:
具备windows环境开发
在移动设备上安装触动精灵App
IDE 脚本编辑器TouchSprite Studio
取点抓色器TSColorPicker
实现互动的具体思路是:
先查找好友的最新消息的坐标区域,
然后再从此区域中识别文字,当然识别会有误差
require("WXFriendChat")
--监听消息列表
function listenMessageList ()
while (true) do
readWithoutMessage();
mSleep(timerSleepConst);
end
end
local recordScrollerMessageList = false;
--在消息列表查找未读消息
function readWithoutMessage()
local needScroller = true;
for y = kNavBarMaxHeight+26, screenHeight-kTabBarHeght, kHomeCellHeight do
if (isColor( 133, y, 0xff4848, 85)) then
tap(133, y);
mSleep(kClickWillPushTime);
withFriendChat();
else
needScroller = false;
end
end
if needScroller then--needScroller
moveTo(200, screenHeight*0.85, 200, screenHeight*0.2, 30);
recordScrollerMessageList = true;
elseif recordScrollerMessageList then
tap(homeTabBtnsRegion(1));--如果次界面没有了未读消息,判断如果滚动过消息列表,则须滚动到顶端。
recordScrollerMessageList = false;
end
end
这里调用listenMessageList方法后执行了一个死循环,会一直监听消息列表,通过方法readWithoutMessage去实现。
这里通过查询x坐标为133的点是否为红色0xff4848,去判断这位好友是否发了新消息,若是,则点击进入,withFriendChat()方法去处理具体的聊天互动。后面判断会滑动列表继续查找有无新消息。
require("WXHelper")
--与好友持续交流
function withFriendChat()
local waitingTime = 0;
while (waitingTime < kWaitingTimeOfS) do--在聊天界面有新消息时可等待好友十秒,无消息则返回消息列表
local flag = managerFrindNewMessages();
if flag then
waitingTime = 0;
end
waitingTime = waitingTime + 1;
mSleep(1000);
end
clickBackBtn();
end
--发送meaasge
function sendMessage(message)
tap(250, screenHeight-50); -- 点击输入框
switchTSInputMethod(true); -- 切换到触动/帮你玩输入法
inputText(message) -- 输入
--switchTSInputMethod(false); -- 切换到之前的输入法
tap(screenWidth-60, screenHeight-50);--点击发送按钮
mSleep(kSendMessageTime);
end
--打开红包
function openRedPacket(y)
tap(kChatBubbleX1, y);--点击红包
mSleep(kOpenRedPacketTime);
tap((screenWidth/2.0), (screenHeight/2.0) + 150);--点击“开”
mSleep(kOpenRedPacketTime);
clickBackBtn();
end
--在聊天界面,处理与好友的交流
function managerFrindNewMessages()
if judgeIsRedPacket() then
return true;
end
local receivedMessage = recognizeFriendMessage();
if (receivedMessage == "" or receivedMessage == nil) then
return false;
end
--数据请求
local urlPath = string.format(kTuLingURL, receivedMessage);
local ret = httpGet(urlPath);
--这里就不解析html数据
local startPosition,endPosition = ret:find("<html>");
if startPosition == 1 then
return false;
end
local tem = json.decode(ret)
local code = tostring(tem.code)
if (code == "100000" or code == "40002") then
message = tostring(tem.text);
sendMessage(message);
toast("收到:"..receivedMessage.." 发送:"..message,2);
end
return true;
end
......
以上是关于自动化脚本如何编写?的主要内容,如果未能解决你的问题,请参考以下文章