【免費註冊】 【會員登入】 【個人資料】 【會員列表】 【論壇幫助】 【論壇搜尋】 【登出論壇】

∮Ω奧米加空間∮
∮Ω奧米加空間∮»技術文件區»【教學】AAuto 筆記

訂覽該主題更新消息 | 將該主題推薦給朋友 發表新主題 發起投票  回覆
作者 主題    
dc
管理員



性別:男
來自:瓦肯星
發表總數:6535
註冊時間:2002-05-07 16:32
(第 1 篇) 【教學】AAuto 筆記

之前使用 AAuto 0.55b 的筆記

import win;
import winex;
import key;

//寻找控制台视窗H E A R T B E A T
for hwnd,title,theadId,processId in winex.each("ConsoleWindowClass","H E A R T B E A T") {
//显示视窗
    ::ShowWindow(hwnd,0x9/*_SW_RESTORE*/)
    //将视窗移到最上层
    win.setForeground(hwnd)
    win.delay(1000)
key.press("ENTER");
    win.delay(2000)
key.press(5,"4","0","6");
    win.delay(1000)
key.press("ENTER")
}

win.delay(15000)
//寻找控制台视窗
for hwnd,title,theadId,processId in winex.each("ConsoleWindowClass","Ranking.exe") {

::SendMessage(hwnd,0x10/*_WM_CLOSE*/  )
================================
import win; //必须首先导入win窗口支持库
import win.ui;
import win.ui.menu;
import web;
import inet.http; //导入http库
import key;
import winex.key;

for hwnd,title,theadId,processId in winex.each("VMPlayerFrame","VMware Player") {

    ::ShowWindow(hwnd,0x9/*_SW_RESTORE*/)
    win.setForeground(hwnd)
    win.delay(1000)
}
/*DSG{{*/
var winform = win.form(parent=...; min=1;bottom=175;scroll=1;text="SF Online";right=230;max=1 )
winform.add(  )
/*}}*/

winform.wndproc = function(hwnd,message,wparam,lparam){
select(message) {//判断消息类型
case 0x201/*_WM_LBUTTONDOWN 鼠标按下*/{   }
case 0x202/*_WM_LBUTTONUP*/ //鼠标弹起
{   }
case 0x3/*_WM_MOVE 鼠标移动*/
{   }
case 0x10/*_WM_CLOSE窗口关闭消息*/
{

}
case 0x205/*_WM_RBUTTONUP 鼠标右键弹起,弹出菜单*/
begin
//winform.popmenu.popup(::LOWORD(lparam), ::HIWORD(lparam));//弹出菜单
end
else
{ }
}
//无返回值则继续调用默认回调函数
}//endproc





//创建web窗体
var wb = web.form(winform,web.UIFLAG_NO3DBORDER/*无边框*/ /*,web.DLCTL_NO_SCRIPTS禁用脚本*/ //,web.DLCTL_SILENT //脚本错误对话框静默模式  
)

winform.show(true)
//打开目标网站
wb.go("[url]http://xx.com.tw/index.asp"[/url])
wb.wait()
//wb.getEle("sfloging")
//wb.setSelect("sfloging")
//key.press("TAB");
//win.delay(20000)
//win.delay(100000)
//

//win.click(hwnd,1)
//显示窗体
//winform.show(true)

//wb.go("[url]http://xx.com.tw/sflogin.asp"[/url])

//win.delay(2);
//key.press(0,"ALT","Y");
//key.click(,"Y")

key.press("TAB")
//显示窗体
//winform.show(true)
//sleep(10000);
//key.press(0,"ALT","F4");
//key.press("Y");
//wb.wait()

//win.delay(10000)

gameaccount="test"
gamapwass="12345"

ele=wb.getEle("GameAcc","sflogin") //获取网页节点 - 输入用户名的文本框
//if(ele){ele.setAttribute("value","test")    } //自动填写用户名
ele.value=gameaccount

wb.wait()
//win.delay(3000)
ele=wb.getEle("GamePwd","sflogin") //获取网页节点 - 输入密码的文本框
//if(ele){ele.setAttribute("value","12345")    } //自动填写密码  
ele.value=gamapwass
wb.wait()
//win.delay(3000)
//document.body.onerror = function (){ return true; }

ele=wb.getEle("Image28","sflogin") //获取提交按钮
if(ele){ ele.click()  } //自动点击提交按钮
//
//

wb.wait()
win.delay(3000)
ele=wb.getEle("Image3","sflogin") //Image3 login
if(ele){ ele.click()  } //自动点击提交按钮



//Image3 login
//Image198888 登出


//notice  offline
//进入消息循环
win.loopMessage();
return wb,winform;
}




本帖由dc最後編輯於2013-07-11 07:10

Your mind to my mind,

your thought to my thought
發表時間:2013-07-11 07:10
dc的個人資料 傳送郵件給dc dc的個人首頁 dc發表的所有文章 送出悄悄話給dc IP:116.*.*.* 編輯  引言回覆 
dc
管理員



性別:男
來自:瓦肯星
發表總數:6535
註冊時間:2002-05-07 16:32
(第 2 篇)

AAuto Quicker v5.1.05

如果我想取得台哥大雲端登入後的網頁內容資料

當月傳輸量
累積共 XXXX GB

可以使用


import win.ui;
import web.form;
import console;

/*DSG{{*/
var winform = win.form(parent=...; min=1;bottom=600;scroll=1;right=800;text="test";max=1 )
winform.add()
/*}}*/

//建立web視窗
var wb = web.form( winform,0x40000000/*_DLCTL_SILENT*/,0x80/*_DLCTL_NO_SCRIPTS*/);
//,0x40000000/*_DLCTL_SILENT*/,0x80/*_DLCTL_NO_SCRIPTS*/ ,
wb.noScriptErr = true
//打開網頁
wb.go("https://iaas.taiwancloud.com.tw/portal/portal/")

//顯示視窗
winform.show(true)

wb.wait("");

//登入
wb.getEle("j_username").value="這裡輸入你的帳號"
ele = wb.getEle("j_password")
ele.value="這裡輸入你的密碼"
ele.form.submit()

win.delay(5000)
var str=wb.fromPoint(0,0).innerHTML;
//存成檔案看一下實際內容 false 覆蓋 true 儲存
//string.save("c:\123.txt",str ,false)

//加上時間
tm = time.now()
tm.format = "%Y-%m-%d %H:%M:%S,"
//string.save("c:\123.txt",tostring(tm),true)
//io.open();

str=string.match(str,"<<DIV class=title2>>.*<<SPAN>>(.*?)<<\/SPAN>>.*GB")
//io.print(str);
if(str != null)
{
string.save("c:\123.txt",tostring(tm)++str++'\r\n' ,true)
}
// 換行
//string.save("c:\123.txt",'\r\n' ,true)

//進入消息循環
win.loopMessage();
return wb,winform;

//關閉程式 如果執行完想讓程式關閉的話把消息循環去掉留這一個
win.quitMessage()




123.txt 內容會得到
2014-08-07 11:35:06,xxxx
2014-08-07 11:35:47,xxxx
這樣可以再自行利用喔~




本帖由dc最後編輯於2014-08-08 15:20

Your mind to my mind,

your thought to my thought
發表時間:2014-08-07 11:38
dc的個人資料 傳送郵件給dc dc的個人首頁 dc發表的所有文章 送出悄悄話給dc IP:210.*.*.* 編輯  引言回覆 
dc
管理員



性別:男
來自:瓦肯星
發表總數:6535
註冊時間:2002-05-07 16:32
(第 3 篇)

AAuto Quicker v5.1.05

自動登入網頁,遍歷搜尋所需連結,下載檔案自動關閉,開啟文檔格式轉換,資料匯入 mysql 範例

import win.ui;
import web.form.util;
import console;
import key;
import winex;
import fsys.codepage;
import mysql.client;

//模擬成系統的ie版本
web.form.util.emulation(9999 );
/*DSG{{*/
var winform = ..win.form(text="test";right=599;bottom=399)
winform.add()
/*}}*/

//create web
import web.form;
var wb = web.form( winform ,/*_UIFLAG_*/,/*_DLCTL_*/,/*USER AGENT*/,true/*securityTrusted*/ );

//io.open()
//開啟網頁
wb.go("http://test.com/")
winform.show(); //show win
wb.wait(""); //wait http open over
wb.getEle("username").value="輸入帳號"  
ele = wb.getEle("password")  
ele.value="輸入密碼"  
ele.form.submit()
wb.wait("");

qele=wb.queryEles( href="/test/te")
qele.click()
wb.wait("");

win.delay(2000)
web.form.util.crossDomain();//開啟框架跨域
//搜尋框架
var fele = wb.queryEles( src="/test/te";tagName="IFRAME";id="frame-301" );
wbFrame=wb.getWebForm(fele);
//焦點移動到框架內按鈕
var ele = wbFrame.queryEles(id="export")
ele.click()
//key.press(2,"TAB","TAB","TAB","TAB","TAB","TAB","TAB","TAB","TAB","TAB","TAB","TAB")
//key.press("ENTER")
win.delay(2000)
   closeDlg_t = function() {
       import winex;

tm = time.now()
    tm.format = "%Y%m%d"
    //file="c:\"++tostring(tm)++".html"
//檔案路徑為執行檔路徑
file= (io._exedir++tostring(tm)++".html")
       var hwnd;
        do{ hwnd = winex.find(,"案下" ) //file down
              sleep(100)
       }while( !hwnd )
        //io.print(hwnd)
var hbuttton = winex.findEx(hwnd,2,"Button","儲存");
//sleep(2000)
winex.click(hbuttton)
sleep(2000)
winex.click(hbuttton)

       hwndss=winex.wait("另存新檔")
//       io.print(hwndss)
//檔案儲存位置與檔名
winex.say2(file,hwndss)
var hbutttonss = winex.findEx(hwndss,1,"Button","存檔");
//io.print(win.getText(hbutttonss))
winex.click(hbutttonss)
}    
        thread.create(closeDlg_t,caption/*傳遞參數給進程*/ )
        
win.delay(20000)

    closeDlg_t2 = function() {
        import winex;

hwnd = winex.find(,"完成") //dlok
//io.print(hwnd)
var hbuttton = winex.findEx(hwnd,3,"Button","關閉");
//io.print(hbuttton)
winex.click(hbuttton)
sleep(2000)
    winex.click(hbuttton)
}    
        thread.create(closeDlg_t2,caption/*傳遞參數給進程*/ )

    tm = time.now()
    tm.format = "%Y%m%d"
//檢查路徑檔案是否存在?如果存在才繼續操作
fullpath = io.exist( io._exedir++tostring(tm)++".html" );
if (fullpath != null) {

//import console;
//import mysql.client;
//console.log("login mysqldb ing...");
//建立 mysql 連線參數
var mysqlDb,err = mysql.client(
    server = "localhost";
    uid = "root";
    pwd = "密碼";
);
if(!mysqlDb){
  //  console.log("id or password error",err)
    return;
}
//清除表單
mysqlDb.exec("TRUNCATE TABLE `dbname`.`tablename`")
tm = time.now()
tm.format = "%Y%m%d"
//file="c:\"++tostring(tm)++".html"
//檔案路徑為執行檔路徑
file= (io._exedir++tostring(tm)++".html")

//str=string.load(file);
//str = string.fromto(str)
//將檔案轉換成 utf8
str = fsys.codepage.load(file,"UTF-8")
//io.open()
//正則表達式
for m1,m2,m3,m4,m5,m6 in string.gmatch(str,"<<td>>([0-9]+)<</td>><<td>>([0-9A-Za-z_.]+)<</td>><<td>>([0-9A-Za-z-]+)<</td>><<td>>(.*?)<</td>><<td>>(.*?)<</td>><<td>>(.*?)<</td>><<td>>(.*?)<</td>><<td>>(.*?)<</td>><<td>>(.*?)<</td>><<td>>(.*?)<</td>><<td>>(.*?)<</td>><<td>>(.*?)<</td>><<td>>(.*?)<</td>><<td>>(.*?)<</td>><<td>>(.*?)<</td>><<td>>(.*?)<</td>><<td>>(.*?)<</td>><<td>>(.*?)<</td>><<td>>(.*?)<</td>><<td>>(.*?)<</td>><<td>>(.*?)<</td>><<td>>(.*?)<</td>>") {
m6=string.replace(m6," ","Null");
//匯入db
mysqlDb.exec("INSERT `dbname`.`tablename` values(@n1,@n2,@n3)",{
n1=m2;
n2=m3;
n3=m6;
})
//io.print(m2,m3,m6);
};

//關閉視窗
win.quitMessage()
}

//進入消息循環
win.loopMessage();
return wb,winform;




本帖由dc最後編輯於2014-08-19 18:12

Your mind to my mind,

your thought to my thought
發表時間:2014-08-13 16:25
dc的個人資料 傳送郵件給dc dc的個人首頁 dc發表的所有文章 送出悄悄話給dc IP:210.*.*.* 編輯  引言回覆 
dc
管理員



性別:男
來自:瓦肯星
發表總數:6535
註冊時間:2002-05-07 16:32
(第 4 篇)

更新到 10 版囉,而且全面支援 Unicode 在也不會亂碼拉^^
http://bbs.aardio.com/forum.php?mod=viewthread&tid=13208&from=portal






Your mind to my mind,

your thought to my thought
發表時間:2016-03-15 16:43
dc的個人資料 傳送郵件給dc dc的個人首頁 dc發表的所有文章 送出悄悄話給dc IP:118.*.*.* 編輯  引言回覆 
dc
管理員



性別:男
來自:瓦肯星
發表總數:6535
註冊時間:2002-05-07 16:32
(第 5 篇) 【原創】自動領取 packt 電子書

使用 aardio v16.24 版本

自動帶入帳密領取該天免費的電子書,之前都使用 php 自動下載但是官方加上了 recaptcha 之後只能手動領取。
試了幾台電腦後都沒出現需輸入 recaptcha 的畫面,所以發給大家嘗試看看

v 0.1
2018/1/29 今天在執行的時候發生網路緩慢~檢查值尚未出現就開始檢查導致程序報錯誤,需在 判斷是否已登入
新增兩行 一個是登入後才會產生的,一個是要檢查的值 id
    //判斷是否已登入 底下插入紅字部分
    wb.waitEle("edit-packt-user-login-form-form-token")
    wb.waitEle("main-container")

    var login = wb.getEle("main-container")

v 0.2
2018/01/30 今天在執行的時候發生沒有值可以取代造成程式錯誤,所以加上了判斷與有兩個字元需要加上 \ 跳脫才能選取到
//查詢是否取得書籍 底下插入紅字部分
wb.wait("<@https://www.packtpub.com/account/my-e[email protected]>");
//將某些特殊字元加上跳脫
jumpcode = {
    [":"] = "\:";
    ["+"] = "\+";
    }
var freetxt = string.replace(freetxt,".|:",jumpcode)

var ele = wb.queryEles( innerHTML=freetxt;tagName="DIV";className="title" );
//如果取不到值離開程式
if ( ele.innerHTML == false ) {
console.log("無法確認是否取得電子書",freetxt)
tm = time.now()
tm.format = "%Y-%m-%d %H:%M:%S,"
string.save("\log.txt",tostring(tm)++"無法確認是否取得電子書 "++freetxt++' 離開程式\r\n',true)
win.quitMessage()
console.quit()
}


v 0.3
2018/01/31 感謝 aardio 論壇的 松江 提供的方式,不用 v 0.2 那麼麻煩,將
    var ele = wb.queryEles( innerHTML=freetxt;tagName="DIV";className="title" );
改為:
    var ele = wb.queryEles( innerHTML="<@" + freetxt + "@>";tagName="DIV";className="title" );
if(#ele){ //找到了
    ...
}
來判斷就可以了~

v 0.4
2018/02/19 昨天的電子書有點怪異,取得名稱是 AWS Administration - The Definitive Guide 但是在 my-ebooks 裡卻是 AWS Administration – The Definitive Guide [eBook]
因為 - 與 – 不同的關係觸發了  如果取不到值離開程式的語法,其中有錯誤
console.quit()
改為:
console.close()

代碼:

import console;
import win.ui;
import web.form.util;
import key;
import winex;
import fsys.codepage;

var packtfreeurl = "https://www.packtpub.com/packt/offers/free-learning"
var mybookurl = "https://www.packtpub.com/account/my-ebooks"
var orderurl = "https://www.packtpub.com/account/my-order-history"
var id = "輸入你的帳號信箱"
var pw = "輸入你的密碼"

console.log("Packt 控制台視窗");
console.log("要開啟的連結是",packtfreeurl);
console.log("帳號",id);
//console.log("密碼",pw);

//log 換行
string.save("\log.txt",'\r\n',true)
tm = time.now()
tm.format = "%Y-%m-%d %H:%M:%S,"
string.save("\log.txt",tostring(tm)++"開始作業"++'\r\n',true)


//模擬成系統的ie版本
web.form.util.emulation(9999);
/*DSG{{*/
var winform = win.form(text="packet free book";right=1024;bottom=768)
winform.add()
/*}}*/

//create web
import web.form;
var wb = web.form( winform ,/*_UIFLAG_*/,/*USER AGENT*/,true/*securityTrusted*/,0x80/*_DLCTL_NO_SCRIPTS*/);
wb.noScriptErr = true

//開啟網頁
wb.go(packtfreeurl)
winform.show(); //show win
wb.wait(""); //wait http open over
wb.waitEle("main-container")

//如果未登入
var ele = wb.getEle("main-container")
    if ( string.match(ele.className,"not-logged-in") == true ){
console.log("判斷尚未登入,開始登入作業");
tm = time.now()
tm.format = "%Y-%m-%d %H:%M:%S,"
string.save("\log.txt",tostring(tm)++"判斷尚未登入,開始登入作業"++'\r\n',true)
//輸入帳號密碼登入
wb.getEle("email").value=id
ele = wb.getEle("password")  
ele.value=pw  
ele.form.submit()
wb.wait("");
}
win.delay(5000)


//判斷是否已登入
wb.waitEle("edit-packt-user-login-form-form-token")
wb.waitEle("main-container")
var login = wb.getEle("main-container")
    if ( string.match(login.className,"logged-in") == true ){
console.log("已登入");
tm = time.now()
tm.format = "%Y-%m-%d %H:%M:%S,"
string.save("\log.txt",tostring(tm)++"已登入"++'\r\n',true)
}
win.delay(5000)
wb.waitEle("free-learning-claim")


//取得免費書籍名稱
eleFreebook = wb.getElesByTag("h2")
freetxt = (eleFreebook(0).innerText)
console.log("今天的免費書籍是",freetxt);
tm = time.now()
tm.format = "%Y-%m-%d %H:%M:%S,"
string.save("\log.txt",tostring(tm)++"今天的免費書籍是 "++freetxt++'\r\n',true)


//取得免費書籍
var ele = wb.getEle("free-learning-claim")  
ele.value = "Claim Your Free eBook"
ele.click()
console.log("取得免費書籍")
tm = time.now()
tm.format = "%Y-%m-%d %H:%M:%S,"
string.save("\log.txt",tostring(tm)++"取得免費書籍 "++'\r\n',true)
wb.waitEle("product-account-list");
//wb.go(mybookurl)
wb.wait("<@https://www.packtpub.com/account/[email protected]>");


//查詢是否取得書籍
var ele = wb.queryEles( innerHTML="<@" + freetxt + "@>";tagName="DIV";className="title" );
if(#ele){
    //如果取到值去掉左邊空白字串
substr = string.trimleft(ele.innerHTML)
console.log("確認取得免費書籍",substr)
tm = time.now()
tm.format = "%Y-%m-%d %H:%M:%S,"
string.save("\log.txt",tostring(tm)++"確認取得免費書籍 "++substr++'\r\n',true)
}else{
    //如果取不到值離開程式
    console.log("無法確認是否取得電子書",freetxt)
tm = time.now()
tm.format = "%Y-%m-%d %H:%M:%S,"
string.save("\log.txt",tostring(tm)++"無法確認是否取得電子書 "++freetxt++' 離開程式\r\n',true)
win.quitMessage()
console.close()
    }


//查詢訂單時間
wb.go(orderurl)
wb.wait("<@https://www.packtpub.com/account/[email protected]>");
var order = wb.queryEles( innerHTML="<@" + freetxt + "@>" ; tagName="DIV"; className = "product-line unseen" )
var orderdate = wb.queryEles(parent = order ; className="order-date float-left").innerHTML
console.log("確認訂單時間",orderdate)
tm = time.now()
tm.format = "%Y-%m-%d %H:%M:%S,"
string.save("\log.txt",tostring(tm)++"確認訂單時間 "++orderdate++'\r\n',true)

//登出
var signout = wb.queryEles( innerHTML="Sign Out";href="@https://www.packtpub.com/logout" );
signout.click()

console.log("已登出")
tm = time.now()
tm.format = "%Y-%m-%d %H:%M:%S,"
string.save("\log.txt",tostring(tm)++"已登出"++'\r\n',true)

//win.loopMessage();
//console.pause(true);





本帖由dc最後編輯於2018-02-19 17:43

Your mind to my mind,

your thought to my thought
發表時間:2018-01-28 22:33
dc的個人資料 傳送郵件給dc dc的個人首頁 dc發表的所有文章 送出悄悄話給dc IP:203.*.*.* 編輯  引言回覆 
dc
管理員



性別:男
來自:瓦肯星
發表總數:6535
註冊時間:2002-05-07 16:32
(第 6 篇) 關於編碼格式問題

aardio 中應當使用 main.aardio 的文件格式(UTF8編碼,不會出現任何亂碼),*.aau格式稍微麻煩一些,默認是ANSI編碼。

如果之前發佈過是正常的但是後來發佈失敗出現亂碼的話,記得看一下是不是文件格式的問題。






Your mind to my mind,

your thought to my thought
發表時間:2018-02-19 17:32
dc的個人資料 傳送郵件給dc dc的個人首頁 dc發表的所有文章 送出悄悄話給dc IP:203.*.*.* 編輯  引言回覆 
所有時間均為GMT+8, 現在是2018-02-21 10:54    
訂覽該主題更新消息 | 將該主題推薦給朋友 發表新主題 發起投票  回覆

快速回覆
主題 ( 回覆文章可以不輸入標題 )
URLs自動分析
有回覆時郵件通知
禁用表情符號
使用簽名

<聯絡我們 - OMEGA - 控制面板>

Powered by Centaur & Joksky & DC, ver 2003.08.14
Copyright ©2002-2008 PHPY.COM


頁面生成時間:0.0053050518035889