2013-07-29 3 views
0

Я пытаюсь сделать мое приложение, щелкнув ссылку, находящуюся внутри страницы, загруженной в элемент управления веб-браузера, но ничего похожего не происходит. Щелчок вручную по ссылке работает (он выполняет некоторую команду javascript для загрузки данных с помощью ajax). Я не могу просто пойти на URL с момента HREF является "#"Имитация ссылки нажмите кнопку управления веб-браузером vb.net

До сих пор я пытался эти методы:

wb.Document.GetElementById("MyElement").InvokeMember("click") wb.Document.GetElementById("MyElement").RaiseEvent("onmousedown") wb.Document.GetElementById("MyElement").RaiseEvent("onclick")

Не уверен, если это поможет, но: wb.Document.GetElementById("MyElement").RaiseEvent("onmouseover") Кажется, что частично имитирует мышь по ссылке

Любые другие варианты Могу ли я попытаться имитировать щелчок мышью?

Спасибо!

+0

ваша первая попытка, wb.Document.GetElementById («MyElement»). InvokeMember («click») должен работать, при условии, что ваш идентификатор верен. Отправьте html по ссылке – Riv

+0

Да, это должно быть. Но почему-то это не так. :) – Osprey

+0

Нужно попытаться получить ссылку как HtmlElementCollection? Dim links Как HtmlElementCollection = wb.Document.GetElementsByTagName ("a") ... для каждой ссылки -> link.InvokeMember ("click") – varocarbas

ответ

1

У меня была та же проблема. Ничего не получилось; RaiseEvent, Document.GetElementById (oLink.Id) .InvokeMember («click») и т. Д.

Наконец-то я нашел ссылку, перейдя через Document.Links HTMLElementCollection; затем сделал ссылку. Фокус и глупый SendKeys.Send ("{ENTER}"). Это сработало! См. Ниже:

 Dim bFound As Boolean = False 
     Dim oLink As HtmlElement = Nothing 

     For Each oLink In wbExample.Document.Links 
      If oLink.InnerText IsNot Nothing _ 
      AndAlso oLink.InnerText.ToString.Trim = "12345" Then 
       bFound = True 
       Exit For 
      End If 
     Next 

     If bFound = False Then 
      Throw New Exception("Big time lameness; can't find the link.") 
     End If 

     oLink.Focus() 
     SendKeys.Send("{ENTER}") 
0

У меня была та же проблема ... Это работает.

For Each Mylink As HtmlElement In WebBrowser1.Document.Links 
    If Mylink.InnerText.Contains("SomeTextToSearchFor") Then 
     WebBrowser1.Navigate(Mylink.GetAttribute("href")) 
    End If 
Next 
0

Прежде всего, это мой первый ответ на представленный вопрос на любом сайте, когда-либо. У меня была такая же проблема, и придумал следующее на основе предыдущих постов, которые работали, по крайней мере, в моей ситуации и избегать использования SendKeys:

Dim oLink As HtmlElement = Nothing 

For Each oLink In WebBrowser1.Document.Links 
    If oLink.InnerText IsNot Nothing _ 
     AndAlso oLink.InnerText.ToString.Trim = "TextToSearchFor" Then 
     oLink.InvokeMember("click") 
     Exit For 
    End If 
Next 

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