以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  如何操作这个网页的添加到选号车按钮  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=72935)

--  作者:Fotable
--  发布时间:2015/8/9 9:09:00
--  如何操作这个网页的添加到选号车按钮

网页是 http://www.newrank.cn/public/info/search.html  这网页在里面搜索公众微信号,然后点击添加到选号车,这是我的目标。但好像我的代码htme.children(0).firstchild.children(1).firstchild.invokemember("click")  不行

 

Dim htme,htmaccount As System.Windows.Forms.HtmlElement
Dim web As System.Windows.Forms.WebBrowser = e.Form.Controls("WebBrowser1").BaseControl
Dim enc As String
web.Navigate("http://www.newrank.cn/public/info/search.html")
Do While web.ReadyState <> 4
    messagebox.show("等待加载,有没有办法,不用这个messagebox来人工判断是否加载完成")
    Application.DoEvents
Loop
htmaccount = web.Document.getelementbyid("txt_account")
If htmaccount IsNot Nothing Then
        htmaccount.Innertext = "旅游"    \'填入搜索关键字 
htme = web.Document.getelementbyid("btn_search") \'找到搜索按钮
    \'messagebox.show("点击搜索目标")
    htme.Invokemember("click")  \'自动点击搜索按钮
    messagebox.show("等待搜索,有没有办法,不用这个messagebox来人工判断是否搜索完成")
    htme = web.Document.getelementbyid("result_list")  \'找到网页结果栏
    If htme.children.count  = 0  Then
        \'messagebox.show( "没有找到该公众号"  )
    Else
        \'enc= htme.children(0).firstchild.firstchild.children(1).Innerhtml
        enc= htme.children(0).firstchild.children(1).innerhtml
        messagebox.show(enc)
        If enc.Contains("已") Then
            \'messagebox.show("该公众号已经在库")
        Else  \'点击添加到选号车按钮,添加该公众号到你的购物车,该按钮在鼠标没移动过去时候,是不会显示的
            messagebox.show(enc,"正在添加"& htme.children(0).firstchild.children(1).firstchild.tagname)
            htme.children(0).firstchild.focus()  \'此语句无效
            htme.children(0).firstchild.children(1).firstchild.invokemember("click")  \'此语句无效 有没有办法直接执行 A href的script呢
           
        End If
    End If
End If

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:操作网页脚本.foxdb


--  作者:大红袍
--  发布时间:2015/8/9 10:13:00
--  

mark 如下代码,细节自己调整

 

Dim htme,htmaccount As System.Windows.Forms.HtmlElement
Dim web As System.Windows.Forms.WebBrowser = e.Form.Controls("WebBrowser1").BaseControl
Dim enc As String
web.Navigate("http://www.newrank.cn/public/info/search.html")
Do While web.ReadyState <> 4
    Application.DoEvents
Loop
htmaccount = web.Document.getelementbyid("txt_account")
If htmaccount IsNot Nothing Then
    htmaccount.Innertext = "旅游"    \'填入搜索关键字
    htme = web.Document.getelementbyid("btn_search") \'找到搜索按钮
   
    htme.Invokemember("click")  \'自动点击搜索按钮
   
    Do While web.Document.getelementbyid("result_count").InnerText = ""
        Application.DoEvents
    Loop
    Dim result  As Integer = web.Document.getelementbyid("result_count").InnerText
    If result = 0  Then
        messagebox.show( "没有找到该公众号"  )
    Else
        Do While web.Document.getelementbyid("result_list").children.Count = 0
            Application.DoEvents
        Loop
        Dim ls = web.Document.getelementbyid("result_list").GetElementsByTagName("div")
        For Each l As object In ls
            If l.GetAttribute("ClassName") = "new_add_shopcar" Then
                l.Invokemember("click")
            End If
        Next
       
    End If
End If


--  作者:Fotable
--  发布时间:2015/8/9 11:09:00
--  

谢谢 大红袍,特别提供的等待网页完成的思路

 

但   l.Invokemember("click")  发现还是没有反映,后面我直接用鼠标点击也没有反映,是不是这个webbrowser控件禁用了脚本呢,我单独用电脑的其他浏览器打开点击是有反应的


--  作者:大红袍
--  发布时间:2015/8/9 12:23:00
--  

1、我测试可以。

 

2、你在webbrowser里面要登陆啊。


--  作者:Fotable
--  发布时间:2015/8/9 18:51:00
--  

我后面又测试发现,一次打开网页 只能添加一个选号,再点击下面一个第二次就无效了。


--  作者:大红袍
--  发布时间:2015/8/9 20:13:00
--  
以下是引用Fotable在2015/8/9 18:51:00的发言:

我后面又测试发现,一次打开网页 只能添加一个选号,再点击下面一个第二次就无效了。

 

呃,不会,只要你能模拟click事件,就什么都能做得到。

 

或者,账号密码加例子发上来测试一下。