2010-10-19 2 views
1

Я работаю над программой vb.net, я хочу, чтобы щелкнуть гиперссылку на страницу, источник выглядеть следующим образом:Vb.net нажмите ссылку, ища String!

<a href="user_messages_view.php?id=23112">messages for Today, 2010-10-19 </a> 

Я хочу, чтобы проверить это каждый день тоже!

Я попытался щелкнуть следующими способами (оба не могли нажать на ссылку!):

Dim theElementCollection As HtmlElementCollection 
    Dim ctrlIdentity As String 
    theElementCollection = WebBrowser1.Document.GetElementsByTagName("a") 
    For Each curElement As HtmlElement In theElementCollection 
    ctrlIdentity = curElement.GetAttribute("innerText").ToString 
    If ctrlIdentity = Today.Date.ToString(Today.Date.ToString("dd")) Then 
    curElement.InvokeMember("click") 
    End If 
    Next 

и я тоже попробовал этот код:

 If Me.WebBrowser1.Document.Links(i).InnerHtml.Contains(Today.Date.ToString("dd")) Then 
    Me.WebBrowser1.Document.Links(i).InvokeMember("Click") 
    End If 
    Next 

Любая помощь будет оценена ! Благодаря!

+0

Это приложение форм или приложение ASP .NET? –

+0

Это форма приложения .net – Beho86

ответ

0

Я нашел, что лучший способ щелкнуть ссылки в WebBrowser - это использовать javascript. Попробуйте что-то вроде этого:

WebBrowser1.Navigate("javascript:function%20x(){document.getElementById('foo').click()}x()") 

Вам нужно переписать код выше в JavaScript, но это кусок пирога. Вы можете протестировать свой javascript, скопировав его непосредственно в панель местоположения браузера. Это также надежный способ заполнения форм.

Предостережения:

  • Обратите внимание, как работа, которую я хочу сделать, завернутый в функции. Это необходимо, если вы хотите, чтобы javascript выполнял несколько операторов. Оберните функцию, а затем вызовите функцию.
  • Вы не можете перейти на URL более 500 символов. (Предел не соответствует 512, но он близок.) Также нет никаких предупреждений, поэтому имейте это в виду.
  • Убедитесь, что вы подожгли, пока страница не будет загружена. ReadyState = Complete и IsBusy = False.
  • Нажатие этой кнопки не всегда генерирует обычные события, которые вы получаете при нажатии ссылки.
  • «% 20» - это гексагон для пробела. Я не помню, было ли это строго необходимо в моем коде. Попробуйте это в обоих направлениях.
+0

Мне нравится идея javascript, но я хочу искать строку даты, поэтому она не будет нажимать неправильную ссылку. Что делать, если я хочу нажать, скажем, первую ссылку, содержащую «id: 333», могу ли я это сделать! – Beho86

+0

Напишите цикл в javascript, что-то вроде (var e в документе.getElementsByTagName ("a")) {if (e.getAttribute ("href"). Test ("id: 333")) e.click(); } Более или менее. В основном вы конвертируете свой код из VB.Net в javascript. – Eyal