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")
来源: <http://bbs.aau.cn/forum.php?mod=viewthread&action=printable&tid=191>