VB.Net - 使用GetElementByClass选择一个类,然后以编程方式单击该项

时间:2013-04-10 18:34:36

标签: html vb.net webbrowser-control

在发布此问题之前,我确实已阅读...

How to select a class by GetElementByClass and click on it programmically

但这对我不起作用。显然我是个白痴,不知道如何使用该代码,或者它只是不适合我。我也在VB.NET中使用WebBrowser控件,如果这有用的话......

我有以下我想点击...

<div class="closewindow"></div>

现在当然这被埋没在吨和其他div之下,但它没有任何直接的“所有者”。没有或类似的东西。它只是独自坐着

以下是

中的html
<div class="main_class">  
<div id="FullItemView">  
<div style="width: 90%; float: left;">  
<div class="headline">  
<table style="width: 100%;">    
<tbody><tr>      
<td style="width: 15%; text-align: right; vertical-align: middle;">
<img class="switchImage" src="pictures/pic.png"></td>      
<td style="width: 70%; vertical-align: middle;">
<span class="ListItemTitle">Renegade</span></td>      
<td style="width: 15%; text-align: left;">
<img class="switchImage" src="pictures/pic.png"></td>    </tr>  </tbody></table>  
</div>  
</div>  
<div class="closeWindow"></div>
......

现在我只想单独输出,然后在这个div和这个div上调用“click”。我知道当它被点击时,因为服务器上有一些PHP代码,但这需要很长时间来解释它是如何工作的。

任何人都知道如何解决这个问题,所以当我有一个变量XITEM或.NET内部的东西时,我可以调用它吗?就像我有......

For XITEM as HTMLELEMENT in WebBrowser1.Document.GetElementsByTagName("div")
......
item.invokeMember("click")
.....

然后它只点击“已选择”的HTMLELEMENT。希望这对每个人都有意义

1 个答案:

答案 0 :(得分:2)

我在stackoverflow.com上找到的原始帖子后,我想出来了

Dim theElementCollection As HtmlElementCollection = Nothing
        theElementCollection = WebBrowser1.Document.GetElementsByTagName("div")
        For Each curElement As HtmlElement In theElementCollection
            'If curElement.GetAttribute("classname").ToString = "example"  It doesn't work.  
            ' This should be the work around.
            If InStr(curElement.GetAttribute("classname").ToString, "closeWindow") Then
                ' Doesn't even fire.
                ' InvokeMember(test) after class is found.
                'MessageBox.Show(curElement.GetAttribute("InnerText"))
                curElement.InvokeMember("Click")
                curElement.InvokeMember("MouseDown")
                curElement.InvokeMember("MouseUp")
                curElement.RaiseEvent("OnClick")
                curElement.Focus()
            End If
        Next