我花了2个小时试图找出我的代码出了什么问题。基本上,这就是我所做的:
if (browser.DocumentText.Contains("Something"))
{
[do somwthing]
}
我在运行此命令之前在WebBrowser控件中呈现了页面,所以我确定文本在那里,但它仍然返回false。
我做了一些调试,我发现browser.DocumentText包含一些奇怪的HTML形式。
现在我可以通过文档中的标签进行迭代并从那里获取文本,但有没有办法通过查看HTML来实现呢?
答案 0 :(得分:1)
让我为你提供一个更好的方法,不使用.DocumentText并且必须解析所有这些字符串,erk。
如果wbMain是您的WebBrowser1控件,请执行以下操作。
首先,您需要获取您的元素的参考,假设您想要访问页面上的第一个<A>
链接,您可以根据需要循环显示所有元素。
这是在VB中,但它与C#中的相同,只是语法不同。
Dim i As Integer
Dim aElement As HTMLAnchorElement = wbMain.Document.All.getElementByTagName("A")(0)
For i = 0 To aElement.attributes.length - 1
MsgBox aElement.attributes.item(i).name & "=" & aElement.attributes.item(i).value
Next i
这将遍历所有属性并以name=value
格式显示在MSGBOX中。
如果您想通过名称(属性名称)进行检索,只需使用aElement.getAttribute("target")
进行调用,即可从链接中检索目标属性值。
如果您想确认自己拥有正确的对象/元素,只需执行aElement.outerHTML
即可获取该元素的完整HTML代码。
由于我使用的是pre.NET版本,如果它给你带来麻烦,可以随意将声明从HTMLAnchorElement更改为IHTMLAnchorElement,当然,如果你想浏览页面上的所有元素,你可以使用IHTMLElement,然后所有你需要做的是wbMain.Document.All(0)为页面上的第一个元素,或循环直到.All.length - 1来完成所有。请记住,如果您使用嵌套的For循环,请不要使用i两次,对其中一个使用j:)。
如果这回答了您的问题,或者我能做些什么来帮助解决您的问题,请告诉我。