以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 如何在弹出的浏览器中自动填表? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=101848) |
-- 作者:ycwk -- 发布时间:2017/6/8 12:17:00 -- 如何在弹出的浏览器中自动填表? 调用一个web版的远程程序,用以下代码 。 Dim Proc As New Process \'定义一个新的Process Proc.File = "https://" & CurrentTable.Current("内网IP") & ":4000" \'指定要打开的网页地址 Proc.Start() 运行程序后,会调用本机的浏览器显示远程窗口(用webrower控件,有的机器上会不兼容,更换内核后也是一样,所以没有用!), 有如下两个框,怎么自动填帐号密码呢? |
-- 作者:有点蓝 -- 发布时间:2017/6/8 14:19:00 -- 用webrower控件才可以,普通浏览器是没有办法的
|
-- 作者:ycwk -- 发布时间:2017/6/8 19:04:00 -- 想测试一下在百度中自动填文字, 狐表窗口的 webbrower1 旁边放置一个按钮想点击自动填内容,代码如下: 但点击后并没有自动填入内容,怎么回事? Dim web As Windows.Forms.WebBrowser web = e.Form.Controls("WebBrowser1").baseControl AddHandler web.DocumentCompleted,addressof WebBrowser1_DocumentCompleted Isgo = True lb="登录" 在全局变量中用以下的代码 Public lb As String \'定义一个全局变量作为标志,根据这个标志执行对应操作 Public Isgo As Boolean \'定义一个全局变量逻辑值,根据这个逻辑值判断是否继续进行运作 \'定义一个WebBrowser加载完成事件,(每当浏览器加载完成当前页面就会执行该事件) Public Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) If Isgo Then \'判断一下ISGO是否需要执行操作 如果是TRUE说明可以继续执行操作, 如果是FALSE说明已经执行完毕,或者点击了停止. Dim web As System.Windows.Forms.WebBrowser = sender \'把触发该事件的Sender转换为WebBrowser If web.ReadyState=System.Windows.Forms.WebBrowserReadyState.Complete\'由于加载完成事件会触发多次,分别为页面数据加载完成,DOM树加载完成.所以这里要判断一下.确保所有东西都加载完成再执行下面的操作 Select Case lb \'分别根据LB标志的值来执行不同的操作 Case "登录" \' web.Document.Window.Frames(1).Document.GetElementById("kw").SetAttribute("Value","test138") \'获得第二个FrAMES框架里面的ID为"username"的的HTML标签元素,并且将其Value设置为"test138" web.Document.GetElementById("kw").SetAttribute("Value","test138") \' web.Document.Window.Frames(1).Document.GetElementById("pwd1").SetAttribute("Value","a110110") \'获得第二个FrAMES框架里面的ID为"pwd1"的的HTML标签元素,并且将其Value设置为"a110110" \'如果元素不是在Frame框架中,那么直接 web.Document.GetElementById 即可 \'如果元素没有ID怎么办? 按照上面的方法,获得指定类型的元素集合,然后循环判断是否包含该字段的方法来获得. \'下面的代码都大同小异,就不一一介绍了. Dim hec As System.Windows.Forms.HtmlElementCollection = web.Document.Window.Frames(1).Document.GetElementsByTagName("input") For i As Integer = 0 To hec.Count-1 If hec(i).OuterHtml.Contains("百度一下") Then hec(i).InvokeMember("click") \' lb="去精华板块" Exit For End If Next Isgo=False End Select End If End If End Sub [此贴子已经被作者于2017/6/8 19:04:16编辑过]
|
-- 作者:有点蓝 -- 发布时间:2017/6/9 8:39:00 -- 首先您要分析网页,取得名称、密码等输入框的id 然后改全局代码Case "登录"里,根据输入框的id填充内容,在调用登入按钮的click 这段代码放到窗口Afterload Dim web As Windows.Forms.WebBrowser web = e.Form.Controls("WebBrowser1").baseControl AddHandler web.DocumentCompleted,addressof WebBrowser1_DocumentCompleted 按钮 Isgo = True lb="登录" Dim web As WinForm.WebBrowser = e.Form.Controls("WebBrowser1") web.Address = "网页地址" |
-- 作者:有点色 -- 发布时间:2017/6/9 9:22:00 -- 参考
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=100112&skin=0
|