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

前端 未结 4 884
无人及你
无人及你 2020-12-11 06:23

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

相关标签:
4条回答
  • 2020-12-11 06:29
    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"

    0 讨论(0)
  • 2020-12-11 06:39

    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?

    0 讨论(0)
  • 2020-12-11 06:39

    Why don't you use qjuery's selector engine for this. And also, where are you expecting the messagebox.show to appear ?

    0 讨论(0)
  • 2020-12-11 06:50

    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
        }
    }
    
    0 讨论(0)
提交回复
热议问题