先看一下在觸動精靈中名叫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
實現互動的具體思路是:
先查找好友的最新消息的坐標區域,
然後再從此區域中識別文字,當然識別會有誤差
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.."\n發送:"..message,2);
end
return true;
end
.
先看一下在觸動精靈中名叫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
實現互動的具體思路是:
先查找好友的最新消息的坐標區域,
然後再從此區域中識別文字,當然識別會有誤差
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.."\n發送:"..message,2);
end
return true;
end
.
操作前準備:
1.系統版本在IOS11~14的蘋果手機 2.已安裝愛思助手的電腦 3.蘋果數據線
開始操作:
(1)使用愛思助手對蘋果手機進行越獄,或者使用一切可以把手機越獄的方法(可自行百度),越獄後你會在手機上看到一個叫Cydia的APP,打開APP,找到「軟體源」,「編輯」--「添加」--源下載
把免費版的按鍵精靈安裝包
(iOS 按鍵精靈免費版 1.3.8 1.3.6 舊版本 deb安裝包)
放到這個路徑中:Cydia安裝deb路徑 /private/var/root/Media/Cydia/AutoInstall ,到此操作基本完成
只需要重啟手機即可完成軟體的自動安裝,如需免費版的按鍵精靈(1.3.8.deb),可點我找到,免費版正常可兼容ios11~13,最新版為1.6.0為付費版,可直接通過按鍵精靈官方源進行下載
Windows上很久以前就有按鍵精靈,Mac上也可以實現類似功能,
以下一個小demo演示了如何去實現滑鼠和鍵盤操作的自動化。
一、新建Mac應用,代碼如下:
- (void)viewDidLoad { [super viewDidLoad];
NSButton* button = [[NSButton alloc] initWithFrame:CGRectMake(100, 100, 100, 100)]; button.target = self; button.action = @selector(buttonClick); [self.view addSubview:button]; [button mas_makeConstraints:^(MASConstraintMaker *make) { make.top.left.mas_equalTo(100); make.right.bottom.mas_equalTo(-100); }];}
- (void)buttonClick{ CGPoint pt = CGPointMake(216, 80); PostMouseEvent(kCGMouseButtonLeft, kCGEventLeftMouseDown, pt); PostMouseEvent(kCGMouseButtonLeft, kCGEventLeftMouseUp, pt); sleep(2); [self writeString:@"Hello" withFlags:0];}
void PostMouseEvent(CGMouseButton button, CGEventType type, const CGPoint point){ CGEventRef theEvent = CGEventCreateMouseEvent(NULL, type, point, button); CGEventSetType(theEvent, type); CGEventPost(kCGHIDEventTap, theEvent); CFRelease(theEvent);}
-(void)writeString:(NSString *)valueToSet withFlags:(int)flags{ UniChar buffer; CGEventRef keyEventDown = CGEventCreateKeyboardEvent(NULL, 1, true); CGEventRef keyEventUp = CGEventCreateKeyboardEvent(NULL, 1, false); CGEventSetFlags(keyEventDown,0); CGEventSetFlags(keyEventUp,0); for (int i = 0; i < [valueToSet length]; i++) { [valueToSet getCharacters:&buffer range:NSMakeRange(i, 1)]; CGEventKeyboardSetUnicodeString(keyEventDown, 1, &buffer); CGEventSetFlags(keyEventDown,flags); CGEventPost(kCGSessionEventTap, keyEventDown); CGEventKeyboardSetUnicodeString(keyEventUp, 1, &buffer); CGEventSetFlags(keyEventUp,flags); CGEventPost(kCGSessionEventTap, keyEventUp); } CFRelease(keyEventUp); CFRelease(keyEventDown);}
二、通過AppleScript實現:
activate application "Finder"tell application "System Events"tell process "Finder"click at {15, 2}end tellend tell
1. 打碼平臺:http://www.fateadm.com/
2. 簡訊驗證接收:http://www.51ym.me/
手機模擬器和按鍵精靈安裝完畢後,使用按鍵精靈助手連接模擬,模擬器授權給精靈就可以正常調試了。
這裡也可以安裝其他夜神模擬器等,或者直接USB連接手機,如果需要在真機上調試腳本需要手機安裝了「按鍵精靈安卓版」和有ROOT權限。
同時PC的按鍵精靈手機助手也可以將寫好的腳本以及控制的UI界面打包成APK/ipa,目前是需要登錄辦理會員才可以,如果沒有其他要求完全就在模擬器上運行腳本也可以。
實踐步驟1. 獲取需要打開APP的包名,以下打開的是趣頭條APP。
Dim bundleName
bundleName = Sys.GetFront()
TracePrint bundleName
2. 完全關閉APP後再打開,以下可以理解是重啟。
Sys.ClearAppCache "com.baidu.baijia" //先關閉當前百家號APP
Delay 1000
RunApp "com.baidu.baijia" //延時1秒打開百家號
3. 使用「抓抓」找特定圖點進入需要跳轉的頁面。
Delay 3000
Dim intX,intY
FindPic 0,0,0,0,"Attachment:截圖1.png","000000",0,0.9,intX,intY
If intX > -1 And intY > -1 Then
TracePrint intX,intY
Tap intX,intY //點擊該圖的坐標進入
Else
TracePrint "沒有找到"
End If
3.1. 打開「抓抓->截圖->裁剪->框選區域->確定->保存->存放到電腦某處」。
3.2. 在抓抓中可以區域找圖測試截圖,結果不是-1一般成功找到坐標,可以複製腳本。
4. 關閉抓抓,先將截圖添加到附件,再將複製的腳本粘貼到腳本框。
5. 將對應的截圖添加好,腳本做好就可以調試。
Sys.ClearAppCache "com.baidu.baijia"
Delay 1000
RunApp "com.baidu.baijia"
Delay 3000
Dim intX,intY
FindPic 0,0,0,0,"Attachment:截圖1.png","000000",0,0.9,intX,intY
If intX > -1 And intY > -1 Then
TracePrint intX,intY
Tap intX,intY
Else
TracePrint "沒有找到"
End If
Delay 9000
Dim intX1, intY1
FindPic 0,0,0,0,"Attachment:截圖2.png","000000",0,0.9,intX1,intY1
If intX1 > -1 And intY1 > -1 Then
TracePrint intX1,intY1
Tap intX1, intY1
InputText "13922895736"
Else
TracePrint "沒有找到"
End If
6. 屏幕自動向下滑動。
//用300毫秒的時間,從點100,100划動到點200,200
Swipe 300, 400, 300, -5000, 50
//Delay 100
//以下是多點觸控的例子
//TouchDown 100, 200, 1//按住屏幕上的100,100坐標不放,並設置此觸點ID=1
//TouchMove 300, -600, 1, 200//將ID=1的觸點花200毫秒移動至300,300坐標
//TouchUp 1//鬆開彈起ID=1的觸點
附:如果完全自動化登錄或自動化註冊,就需要上面的一個打碼或者簡訊驗證碼接收了,
如果是簡訊就接入後面的輸入手機號請求接口獲取簡訊驗證碼然後輸入再請求。
如果是圖形驗證碼需要接入打碼平臺通過上傳驗證碼圖片後獲取圖形碼再請求,
如果是滑塊驗證網上有實現的案例。
iOS自動化教程群