2012-06-17 2 views
0

На веб-сайте имеется 17 кнопок HTML. Эти кнопки не имеют идентификатора и имеют одинаковое имя, тип и значение. Я хочу нажимать кнопки программно, используя управление веб-браузером vb.net 2008. Когда я пишу этот кодДоступ к кнопкам HTML

Public Class Form1 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     WebBrowser1.Navigate("website bla bla") 
    End Sub 

    Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted 

     Dim allelements As HtmlElementCollection = WebBrowser1.Document.All 

     For Each webpageelement As HtmlElement In allelements 

      If webpageelement.GetAttribute("value") = "Start" Then 

       webpageelement.InvokeMember("click") 

      End If 

     Next 

    End Sub 
End Class 

Затем каждый раз на мою кнопку кликает по 17-й кнопке. Где я хочу щелкнуть 1-ю кнопку индивидуально, вторую кнопку, третью кнопку и так далее на следующих кнопках по отдельности. Поэтому можете ли вы направить меня, как нажимать каждую кнопку отдельно. Вот HTML-код кнопок.

ответ

0

Ваша последняя кнопка получает щелчок, потому что все кнопки имеют, как вы утверждаете, одно и то же значение. Следовательно, вы не должны идентифицировать кнопку по значению.

Лучшим решением было бы изменить сторону сервера, чтобы кнопки имели некоторое свойство (в идеале id), что позволяет легко различать их друг от друга программным путем. (Это применимо, например, если вы пишете тестовый жгут для веб-сайта, который разрабатывают ваши коллеги. Поговорите с ними и назовите свой запрос «тестируемостью».)

Однако, если вам абсолютно необходимо работать с как есть, есть один бит информации, который делает каждую кнопку уникальной, и это ее последовательный индекс.

Dim i As Integer 
Dim allButtons As HtmlElementCollection 

allButtons = WebBrowser1.Document.getElementsByTagName('input'); 

i = 0 
For Each webpageelement As HtmlElement In allButtons 
    i += 1 
    If i = 7 Then 
     webpageelement.InvokeMember("click") 
    End If 
Next 

Это щелкнет седьмой кнопкой. Недостатком этого метода является то, что каждый раз, когда макет сайта немного меняется, ваш код клиента сильно разрушается, вызывая всевозможные путаницы и скуки до его исправления. Вы можете частично бороться с этим, представляя эти фиксированные значения индекса с символическими именами и сравнивая любые последовательные индексы только с теми, но он по-прежнему является хрупкой техникой с трудным повторным использованием.

+0

Переполнение стека не является интерактивной службой отладки. – casperOne

+0

Привет друг. Может у, пожалуйста, помогите мне решить проблему? –

+0

@ChauhdryKing - Давайте уважать решение модератора и придерживаться формата Q + A сайта.Хорошие вопросы обычно получают хорошие ответы от сообщества очень, очень быстро. Отдельные вопросы следует вводить как отдельные, автономные вопросы. –

Смежные вопросы