一、創建簡單的WEB窗口(winform) 1.1點擊新建WEB窗體即可創建WEB瀏覽器,默認代碼如下: //創建web窗體 第二個參數可以使用一個或多個_UIFLAG_ 前綴的常量自定義外觀,多個常量之間用位或操作符( | ) 連接. 第三個參數可使用_DLCTL_前綴的常量以控制下載行為,多個常量之間用位或操作符( | ) 連接. 第四個參數USER AGENT(新版新添加還沒知道用法請老大指導) 較常用第三個參數,控制下載行為,具體參數可參考幫助文檔 常用有
1.2常用WEB窗體特殊設置 1). 禁止所有腳本錯誤對話框,並使腳本繼續運行。 與wb.silent不同,wb.noScriptErr僅對腳本錯誤對話框起作用,並且不會阻止腳本執行. wb.noScriptErr = ture 2.)不顯示網頁JS彈出的【確定】窗口 wb.showMsg=function( 提示信息, 對話框標題 ){ 如想顯示【確定】窗口並自動點擊後消失則如下: wb.showMsg=function(text/*信息*/,caption/*標題*/){ (更多資料詳見幫助WEB窗體事件說明) 1.3 WEB窗體最大化、最小化 //點擊最大化,但是這個函數如果發現最大化會還原窗口,並返回一個值表示當前是否最大化 1.4禁止點擊鏈接在新窗口打開 A //在wb.wait()後 添加下面代碼,在所屬的窗口禁止彈出 B 寫在事件裡,這樣每次打開頁面就自動修改,不需要寫在wb.wait後面了.全局開始禁止彈出窗口 wb.DocumentComplete=function( pDisp, url) { C //打開一個網址 1.5在控件顯示WEB窗體 web.form是一個類,其構造函數可以在現有窗口對象中插入瀏覽器控件.窗口對象可以是一個win.form對象,也可以是窗體上的控件,例如static控件. 如:在static控件顯示WEB窗體瀏覽 //創建web窗體 還可添加多控件顯示多個WEB網頁 2010-12-1 19:36 上傳 下載附件 (51.3 KB) 二、自動填表、自動登錄(提交)代碼 2.1 自動填表(有NAME或ID) A 簡單 ,沒框架,只有1個屬性名 /*尋找所屬節點的屬性,然後輸入新的屬性值 ele = wb.getEle( HTML節點的ID名name, 框架名 ) B 多個屬性名相同 tele = wb.getEles( HTML節點的name屬性, 框架名 ) 該函數返回網頁上所有name屬性相同的同名節點.返回值為一個com數組.注意com數組使用()括號讀取成員而不是使用索引操作符[] 可以通過第二個參數指定框架窗口,該參數可以省略. 2.2 自動登錄或提交表單 ele.form.submit()//自動提交表單 2.3 特殊形式提交(無NAME無ID) 採用wb.eachAll 遍歷方法查找節點,並使用ele.click()模擬點擊 //遍歷所有input節點 遇到特殊形式,採用遍歷查找是最簡單的方法。 更多的自動登錄示例可查看舊論壇的帖子,裡面彙總了各種形式的登錄示範,還有POST登錄方法。 163郵箱登錄問題(carl版主指導163填表及登錄) 登錄問題(帖子有老大指導多種方法自動登錄) aardio 網頁操作專題視頻(lujjh超版製作的經典視頻教程) 2.4 自動點擊網頁超鏈接 也採用遍歷查找超鏈接,然後自動點擊,老大教我們封裝了一個點擊超鏈接函數clickLink()
使用wb.doScript執行js腳本提交的方法
import win; import win.ui; import win.ui.menu import win.ole /*DSG{{*/ var winform = win.form(parent=...; min=1;bottom=249;scroll=1;right=349;text="aardio Form";max=1 ) winform.add( ) /*}}*/ import web.form; //創建web窗體 var wb = web.form( winform ); //打開目標網站 wb.go("http://secure./3rdServices/50hero") winform.show(true) wb.wait(""); //登錄 wb.getEle("username").value="登錄用戶名" wb.getEle("password").value="999999" wb.doScript("FormSubmit()") //進入消息循環 win.loopMessage(); return wb,winform; 使用ele.form.submit提交的方法
import win; import win.ui; import win.ui.menu import win.ole /*DSG{{*/ var winform = win.form(parent=...; min=1;bottom=249;scroll=1;right=349;text="aardio Form";max=1 ) winform.add( ) /*}}*/ import web.form; //創建web窗體 var wb = web.form( winform ); //打開目標網站 wb.go("http://secure./3rdServices/50hero") winform.show(true) wb.wait(""); //登錄 wb.getEle("username").value="登錄用戶名" ele = wb.getEle("password") ele.value="999999" ele.form.action = 'http://secure./signin?f=out' ele.form.submit() //進入消息循環 win.loopMessage(); return wb,winform; 自動post的方法
import win; import win.ui; import win.ui.menu import win.ole /*DSG{{*/ var winform = win.form(parent=...; min=1;bottom=249;scroll=1;right=349;text="aardio Form";max=1 ) winform.add( ) /*}}*/ import web.form; //創建web窗體 var wb = web.form( winform ); //構建上傳數據 postData = string.fromto( "ru=http%3A%2F%2Fsecure.%2F3rdServices%2F50hero&login_submit=%E7%99%BB%E5%BD%95&username=登錄用戶名&password=999999&x=33&y=15&_REFERER=" ,0 ,65001 ) //自動提交 wb.post("http://secure./signin?f=out" ,postData ) //顯示窗口 winform.show(true) //進入消息循環 win.loopMessage(); return wb,winform; 使用wb.getDoc().Script.函數(至少一個參數) 執行腳本提交 import win; import win.ui; import win.ui.menu import win.ole /*DSG{{*/ var winform = win.form(parent=...; min=1;bottom=249;scroll=1;right=349;text="aardio Form";max=1 ) winform.add( ) /*}}*/ import web.form; //創建web窗體 var wb = web.form( winform ); //打開目標網站 wb.go("http://secure./3rdServices/50hero") winform.show(true) wb.wait(""); //登錄 wb.getEle("username").value="登錄用戶名" wb.getEle("password").value="999999" //這樣直接執行函數有返回值,必須至少傳遞一個參數,隨便寫一個也可以 wb.getDoc().Script.FormSubmit(0) //進入消息循環 win.loopMessage(); return wb,winform; 用wb.eachAll查找節點,並使用ele.click()模擬點擊提交. import win; import win.ui; import win.ui.menu import win.ole /*DSG{{*/ var winform = win.form(parent=...; min=1;bottom=249;scroll=1;right=349;text="aardio Form";max=1 ) winform.add( ) /*}}*/ import web.form; //創建web窗體 var wb = web.form( winform ); //打開目標網站 wb.go("http://secure./3rdServices/50hero") winform.show(true) wb.wait(""); //登錄 wb.getEle("username").value="登錄用戶名" wb.getEle("password").value="999999" //遍歷所有input節點 for( i,ele in wb.eachAll("input") ){ if( ele.src == "http://game./hero/wp-content/themes/hero_v1/images/dl.gif" ) ele.click(); } //進入消息循環 win.loopMessage(); return wb,winform; 不用web窗體也可以自動提交 import process; import inet.whttp whttp = inet.whttp(); //構建上傳數據 postData = string.fromto( "ru=http%3A%2F%2Fsecure.%2F3rdServices%2F50hero&login_submit=%E7%99%BB%E5%BD%95&username=登錄用戶名&password=999999&x=33&y=15&_REFERER=" ,0 ,65001 ) str,errmsg = whttp.down("http://secure./signin?f=out" ,postData,"" ); whttp.close();//釋放資源 if(str){//如果提交成功則保存到指定文件 string.save("/post.html",str ) process.execute( "/post.html" ) } else{//否則輸出錯誤信息 win.msgbox(errmsg) } |
|