I have been trying to use this code to read the element by class in html/ajax knowing GetElementByClass is not a option in webBrowser.Document. I can\'t seem to get a return
Dim HtmlElementcolltwo As HtmlElementCollection = WebBrowser1.Document.GetElementsByTagName("button")
For Each eleme As HtmlElement In HtmlElementcolltwo
' Check the attributtes you want
If eleme.GetAttribute("className") = "derrt_submit feed-zed-bff" Then
'Check even the text if you want
' If elem.InnerText = "Sign In" Then
'Invoke your event
eleme.InvokeMember("click")
'End If
End If
Next
This Also works instead of using "class" use "className"
this is a example of how i used the webbrowser control to find class specific elements and invoke Click on a link inside.
simplified >
foreach (HtmlElement item in webBrowser1.Document.GetElementsByTagName("li"))
{
// use contains() if the class attribute is
// class="page_item page-item-218 current_page_item"
//this to be more on spot! >> if (item.OuterHtml.Contains("class=\"page_item"))
// or
if (item.OuterHtml.Contains("page_item"))
{
foreach (HtmlElement childItem in item.Children)
{
if (childItem.TagName == "A")
{
//Click the link/Current element
childItem.InvokeMember("Click");
break;
}
}
break;
}
}
does this way work ?..
it works for me right here.
or maybe i misunderstand your question?
Why don't you use qjuery's selector engine for this. And also, where are you expecting the messagebox.show to appear ?
I admit it's not very intuitive but you need to use GetAttribute("className")
instead of GetAttribute("class")
HtmlElementCollection theElementCollection = default(HtmlElementCollection);
theElementCollection = webBrowser1.Document.GetElementsByTagName("span");
foreach (HtmlElement curElement in theElementCollection)
{
if (curElement.GetAttribute("className").ToString() == "example")
{
MessageBox.Show(curElement.GetAttribute("InnerText")); // Do something you want
}
}