Foxtable(狐表)用户栏目专家坐堂 → 如何在弹出的浏览器中自动填表?


  共有2039人关注过本帖树形打印复制链接

主题:如何在弹出的浏览器中自动填表?

帅哥哟,离线,有人找我吗?
ycwk
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1228 积分:8561 威望:0 精华:0 注册:2016/2/2 21:52:00
如何在弹出的浏览器中自动填表?  发帖心情 Post By:2017/6/8 12:17:00 [只看该作者]

调用一个web版的远程程序,用以下代码 。      

Dim Proc As New Process        '定义一个新的Process
Proc.File = "https://" &  CurrentTable.Current("内网IP") & ":4000"       '指定要打开的网页地址
Proc.Start()



运行程序后,会调用本机的浏览器显示远程窗口(用webrower控件,有的机器上会不兼容,更换内核后也是一样,所以没有用!),  有如下两个框,怎么自动填帐号密码呢?   


图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/6/8 14:19:00 [只看该作者]

webrower控件才可以,普通浏览器是没有办法的

 回到顶部
帅哥哟,离线,有人找我吗?
ycwk
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1228 积分:8561 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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 = "网页地址"

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/9 9:22:00 [只看该作者]


 回到顶部