2017-01-19 2 views
1

Я пытаюсь программно нажать ряд кнопок на веб-странице HTML, который выглядит следующим образом:Программным нажмите кнопку в C#

<div class="srp-actions blue-button"><a class="primary-action-button label" href="/people/invite?from=profile&amp;key=243930744&amp;firstName=Will&amp;lastName=Yang&amp;authToken=p8Oz&amp;authType=OUT_OF_NETWORK&amp;connectionParam=member_desktop_search_people-vertical-module&amp;csrfToken=ajax%3A7824954558998584370&amp;trk=vsrp_people_res_pri_act&amp;trkInfo=VSRPsearchId%3A12487701484818103943%2CVSRPtargetId%3A243930744%2CVSRPcmpt%3Aprimary" data-li-result-interaction="instant-connect" data-li-success-text="Invite Sent" data-li-connect-href="/people/contacts-search-invite-submit?memIds=243930744&amp;authTokens=p8Oz&amp;authTypes=OUT_OF_NETWORK&amp;from=voltron&amp;firstName=Will&amp;lastName=Yang&amp;isAjax=true&amp;connectionParam=member_desktop_search_people-vertical-module&amp;csrfToken=ajax%3A7824954558998584370&amp;trk=vsrp_people_res_invite_act&amp;trkInfo=VSRPsearchId%3A12487701484818103943%2CVSRPtargetId%3A243930744%2CVSRPcmpt%3Aprimary">Connect</a><div class="secondary-actions-trigger"><button role="button" class="trigger"><span>Secondary Actions</span></button><ul class="menu"><li><a href="/requestList?displayProposal=&amp;destID=243930744&amp;creationType=DC&amp;authToken=p8Oz&amp;authType=OUT_OF_NETWORK&amp;trk=vsrp_people_res_sec_act&amp;trkInfo=VSRPsearchId%3A12487701484818103943%2CVSRPtargetId%3A243930744%2CVSRPcmpt%3Aprimary">Send InMail</a></li><li><a href="/forwardProfileMsg?displayCreate=&amp;profileID=0_0TL7XobJNwUxDDGHun9drH&amp;profileName=Will+Yang&amp;network=I&amp;trk=vsrp_people_res_sec_act&amp;trkInfo=VSRPsearchId%3A12487701484818103943%2CVSRPtargetId%3A243930744%2CVSRPcmpt%3Aprimary">Share</a></li></ul></div></div> 

Вот текущий код, чтобы найти элемент кнопки и выполнить действие:

HtmlElementCollection elements = webBrowser1.Document.GetElementsByTagName("a"); 

// First find and click "Connect" buttons 
foreach (HtmlElement item in elements) 
{ 
    if (item.OuterHtml.Contains("action-button label") && 
     !item.OuterHtml.Contains("Message") && 
     item.OuterHtml.Contains("OUT_OF_NETWORK")) 
    { 
     item.SetAttribute("href", item.GetAttribute("data-li-connect-href")); 
     item.InvokeMember("Click"); 
    } 
} 

код правильно найти элемент якорь, но метод InvokeMember, кажется, не дают никакого результата, ни малейшего представления, что это не так?

ответ

2

Тег вы используете не точно указать, какой конкретный тег вам нужно:

x = webBrowser1.Document.GetElementsByTagName("a") 

Вместо этого попробуйте:

x= webBrowser1.Document.GetElementsById("anchor_id"); 
x.InvokeMember("click"); 

Или попробуйте использовать следующий метод, чтобы проверить, является ли его предполагаемый тег вам» повторно используя атрибут.

if (element.GetAttribute(attribute).Equals(attName)) 
+0

Я вижу вашу точку зрения, но в html-коде выше элемент привязки не имеет идентификационного тега, поэтому не будет работать ... –

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