自动化脚本如何编写?

Posted Cydia

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动化脚本如何编写?相关的知识,希望对你有一定的参考价值。


先看一下在触动精灵中名叫moveTo的API,

它的用法如下: moveTo(x1,y1,x2,y2,step,ms,index,stop)参数类型必填说明x1number是屏幕起点横坐标y1number是屏幕起点纵坐标x2number是屏幕终点横坐标y2number是屏幕终点纵坐标stepnumber否滑动速度,不写默认为 10 pxmsnumber否弹起时间,不写默认为 50 毫秒indextable/number否手指序号,仅支持函数库 v1.3.0 及其以上版本默认不写随机手指序号,推荐使用 1 - 9stopboolean否是否解决惯性滑动,仅支持函数库 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


     


实现互动的具体思路是:

  1.  先查找好友的最新消息的坐标区域,

  2. 然后再从此区域中识别文字,当然识别会有误差

    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


    ......





以上是关于自动化脚本如何编写?的主要内容,如果未能解决你的问题,请参考以下文章

30 段 Python 实用代码

创建自己的代码片段(CodeSnippet)

即学即用的 30 段 Python 实用代码

如何编写脚本自动运行android studio测试用例

如何在 Toad for Oracle 中使用自定义代码片段?

VS Code配置snippets代码片段快速生成html模板,提高前端编写效率