Нажмите на кнопку в элементе управления WebBrowser - PullRequest
0 голосов
/ 17 сентября 2018

HTML Body, Ty Помогите мне.

<div class="bottoms_list">
    <div class="One cell">
        <button class="active"><span><i class="Picture"></i></span>1</button>
    </div>
    <div class="Two cell">
        <button class=""><span><i class="Picture"></i></span>2</button>
    </div>
    <div class="three cell">
        <button class=""><span><i class="Picture"></i></span>3</button>
    </div>
    <div class="four cell">
        <button class=""><span><i class="Picture"></i></span>4</button>
    </div>
</div>

Здесь кнопка (1) активна.

Допустим, я хочу активировать кнопку (2).

Я пытался:

Dim spanpic As String = ""

For Each choice As HtmlElement In Form1.WebBrowser1.Document.GetElementsByTagName("div")

    If choice.GetAttribute("className").Contains("bottoms_list") AndAlso choice.Id.StartsWith("2") Then
        spanpic = choice.Id

        For Each elm As HtmlElement In choice.Document.GetElementsByTagName("button")

            If elm.GetAttribute("className") = "button" Then
                elm.InvokeMember("click")
                Exit For
            End If
        Next
    End If
Next

 '''''''''''''''''
Threading.Thread.Sleep(100)

 Try

 For Each elm As HtmlElement In 
 Form1.WebBrowser1.Document.GetElementById(spanpic).Document.GetElementsByTagName("button")

If elm.GetAttribute("className") = "bottoms_list" Then
                If elm.GetAttribute("disabled") = "disabled" Then
                Else
                    Exit For
                End If
            End If
        Next
    Catch
    End Try

Это все, что я знаю, и у меня нет хорошего опыта с идентификаторами элементов ......................................

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Попробуйте:

"get collection of all div in the webpage"
For Each divSect As HtmlElement In WebBrowser1.Document.GetElementsByTagName("div")

    "get the div which has the tag of Two Cell"
    If divSect.OuterHtml.Contains("Two Cell") then

        "get the button inside the div which has the tag of Two Cell"
        For Each elem as HtmlElement In divSect.children
        If elem.GetAttribute("className") = "button" Then
            elem.InvokeMember("click")
        End if
        Next
    End if    
Next

Я надеюсь, что этот код может решить вашу проблему.

0 голосов
/ 18 сентября 2018

посмотрите, я тоже не эксперт, но если вы хотите установить класс "активный" для нажатой кнопки, то вам следует использовать методы связывания классов в большинстве сред java-скриптов.

Дляя использую VueJs и вот как я это сделаю:

HTML Body:

<div id="myList">
  <div class="bottoms_list">
    <div class="One cell">
      <button @click="isActive = 1" :class="{active: isActive == 1}"><span><i class="Picture"></i></span>1</button>
    </div>
    <div class="Two cell">
      <button @click="isActive = 2" :class="{active: isActive == 2}"><span><i class="Picture"></i></span>2</button>
    </div>
    <div class="three cell">
      <button @click="isActive = 3" :class="{active: isActive == 3}"><span><i class="Picture"></i></span>3</button>
    </div>
    <div class="four cell">
      <button @click="isActive = 4" :class="{active: isActive == 4}"><span><i class="Picture"></i></span>4</button>
    </div>
  </div>
</div>

тогда ваш экземпляр Vue должен выглядеть следующим образом:

new Vue({ 
  el: '#myList',
  data: {
    isActive: 0,
  },
});

Вы можетеоптимизируйте этот код до одной строки, используя директиву v-for.

...