import win.ui.minmax;
win.ui.minmax(winform)
winform.hitmax() 最大化,默認最大化就會還原
winform.close() 關閉窗口
一、創建簡單的WEB窗口(winform)
1.1點擊新建WEB窗體即可創建WEB瀏覽器,默認代碼如下:
//創建web窗體
var wb = web.form( winform
, //可輸入_UIFLAG_ 前綴的常量自定義外觀
, //可輸入_DLCTL_ 前綴的常量以控制下載行為
, //"USER AGENT"
);
第二個參數可以使用一個或多個_UIFLAG_ 前綴的常量自定義外觀,多個常量之間用位或操作符( | ) 連接.
第三個參數可使用_DLCTL_前綴的常量以控制下載行為,多個常量之間用位或操作符( | ) 連接.
第四個參數USER AGENT(新版新添加還沒知道用法請老大指導)
較常用第三個參數,控制下載行為,具體參數可參考幫助文檔
常用有
_DLCTL_DOWNLOADONLY | 下載圖片,但不顯示 |
_DLCTL_NO_FRAMEDOWNLOAD | web窗體對包含框架的頁面進行語法分析但不下載任何幀, 同時忽略框架, |
_DLCTL_RESYNCHRONIZE | 忽略緩存中的數據並向服務器請求更新 |
_DLCTL_SILENT | 組件對話框、腳本錯誤對話框靜默模式 |
_DLCTL_NOFRAMES | 禁止框架 |
1.2常用WEB窗體特殊設置
1). 禁止所有腳本錯誤對話框,並使腳本繼續運行。 與wb.silent不同,wb.noScriptErr僅對腳本錯誤對話框起作用,並且不會阻止腳本執行.
wb.noScriptErr = true
2.)不顯示網頁JS彈出的【確定】窗口
wb.showMsg=function( 提示信息, 對話框標題 ){
return false; /*返回false則不顯示對話框*/
}
如想顯示【確定】窗口並自動點擊后消失則如下:
wb.showMsg=function(text /*信息*/,caption /*標題*/){
closeDlg_t = function(title) {
import winex;
//查找符合標題的對話框
var hwnd;
do{
hwnd = winex.find("#32770" /*標准對話框類名*/,title )
sleep(100)
}while( !hwnd )
//查找對話框上的第一個按鈕
var hbuttton = winex.findEx(hwnd,1,"Button");
winex.click(hbuttton);
}
thread.create(closeDlg_t,caption /*傳遞參數給線程*/ )
return true; /*返回false則不顯示對話框*/
}
(更多資料詳見幫助WEB窗體事件說明)
1.3 WEB窗體最大化、最小化
//點擊最大化,但是這個函數如果發現最大化會還原窗口,並返回一個值表示當前是否最大化
winform.hitmax()
//點擊最小化按鈕
winform.hitmin()
//這個是最大化,並且顯示,多了一個顯示的步驟
winform.show(0x3/*_SW_MAXIMIZE*/)
//這個是最小化,並顯示
winform.show(0x6/*_SW_MINIMIZE*/)
1.4禁止點擊鏈接在新窗口打開
A
//在wb.wait()后 添加下面代碼,在所屬的窗口禁止彈出
for(k,ele in wb.eachLinks()){
ele.target = "_self"
}
B 寫在事件里,這樣每次打開頁面就自動修改,不需要寫在wb.wait后面了.全局開始禁止彈出窗口
wb.DocumentComplete=function( pDisp, url) {
/*當整個文檔完成時觸發,刷新頁面不觸發*/
for(k,ele in wb.eachLinks()){
ele.target = "_self"
}
}
//打開目標網站
wb.go("http://www.ecranesoft.com/")
C
//打開一個網址
wb.go(網址,自定義http請求頭,目標窗口="_self")
D
wb.NewWindow2= function ( ppDisp, Cancel) {
/*彈出新窗口以前觸發 */
owner .go( owner .translateUrl )
return ppDisp, true ; /*第二個返回值如果為真,則取消新窗口*/
}
E
wb.translate = function ( url ){
/*解析URL時觸發 */
owner .translateUrl = url;
}
1.5在控件顯示WEB窗體
web.form是一個類,其構造函數可以在現有窗口對象中插入瀏覽器控件.窗口對象可以是一個win.form對象,也可以是窗體上的控件,例如static控件.
如:在static控件顯示WEB窗體瀏覽
//創建web窗體
var wb = web.form( winform.static //這是winform窗體上的一個靜態文本框控件
,0x4 /*_UIFLAG_NO3DBORDER*/ | 0x8 /*_UIFLAG_SCROLL_NO*/ //禁用邊框,禁用滾動條
,0x10 /*_DLCTL_DLIMAGES*/ | 0x40000000 /*_DLCTL_SILENT*/ //允許下載圖片,但是禁用組件對話框、腳本錯誤對話框等
, //"USER AGENT"
);
還可添加多控件顯示多個WEB網頁
二、自動填表、自動登錄(提交)代碼
2.1 自動填表(有NAME或ID)
A 簡單 ,沒框架,只有1個屬性名
/*尋找所屬節點的屬性,然后輸入新的屬性值
當知道屬性ID或NAME時可采用下面語句*/
ele=wb.waitEle("_"//雙引號里填屬性ID或name)
ele.value = _//修改屬性默認值;
ele.fireEvent("_"//當有事件執行函數時需事件發生器,如onchange onsubit)
ele = wb.getEle( HTML節點的ID名name, 框架名 )
/*調用wb.getEle之前必須調用 wb.wait() 等待網頁下載完畢.
而使用 wb.waitEle() 則實現等待該節點下載並返回該節點的功能,而無須等待整個網頁下載完*/
B 多個屬性名相同
tele = wb.getEles( HTML節點的name屬性, 框架名 )
tele(0).setAttribute("屬性名字", "修改第一個節點屬性值")
該函數返回網頁上所有name屬性相同的同名節點.返回值為一個com數組.注意com數組使用()括號讀取成員而不是使用索引操作符[]
可以通過第二個參數指定框架窗口,該參數可以省略.
2.2 自動登錄或提交表單
ele.form.submit()//自動提交表單
2.3 特殊形式提交(無NAME無ID)
采用wb.eachAll 遍歷方法查找節點,並使用ele.click()模擬點擊
//遍歷所有input節點
for( i,ele in wb.eachAll("input") ){
if( ele.屬性 == "_"//當找到所屬的屬性恆等於一個“點擊鏈接的值” )
ele.click();//然后點擊
}
遇到特殊形式,采用遍歷查找是最簡單的方法。
更多的自動登錄示例可查看舊論壇的帖子,里面匯總了各種形式的登錄示范,還有POST登錄方法。
163郵箱登錄問題(carl版主指導163填表及登錄)
登錄問題(帖子有老大指導多種方法自動登錄)
AAuto 網頁操作專題視頻(lujjh超版制作的經典視頻教程)
取得指定網頁節點的方法歸納 (模擬點擊必須掌握的知識)
2.4 自動點擊網頁超鏈接
也采用遍歷查找超鏈接,然后自動點擊,老大教我們封裝了一個點擊超鏈接函數clickLink()
clickLink = function(title){ //給函數一個連接名參數
for(k,ele in wb.eachLinks() ){ //遍歷所有超鏈接
if(string.find(ele.innerHTML,title )){ //如果發現超鏈接名
ele.click(); //自動點擊
break;
}
}
}
// 當鏈接名為A,則執行點擊
clickLink("A")