2017-02-07 4 views
0

Если вы перейдете на this website, вы увидите, что есть кнопка ExportExcel. Если я просмотреть исходный код, я нахожу кнопку под этим форматом:Как нажимать кнопку на веб-странице, которая не имеет идентификатора?

<td align="right" class="ExportExcel" valign="middle">          
    <a href="JavaScript:void(0)" onClick="openExport('../pages/ListExportToExcel.aspx?zipCode=&city=&county=&sState=MI&fromPrice=0&toPrice=0&fCaseNumber=&bed=0&bath=0&street=&buyerType=0&specialProgram=&Status=0&indoorAmenities=&outdoorAmenities=&housingType=&stories=&parking=&propertyAge=');return false;" >Export to</a> 
</td> 

После this solution:

WebBrowser MyBrowser = new WebBrowser(); 
MyBrowser.Navigate("https://www.hudhomestore.com/Listing/PropertySearchResult.aspx?sState=MI"); 
HtmlElementCollection classButton = MyBrowser.Document.All; 
foreach (HtmlElement element in classButton) 
    if (element.GetAttribute("ExportExcel") == "button") 
     element.InvokeMember("click"); 

Я получаю сообщение об ошибке, как MyBrowser.Document равно нулю: ссылка

объекта не установлен в экземпляр объекта.

Где я иду не так? Или есть лучший/другой способ?

EDIT:

основе с uggestion by user @DavidR, я попытался ниже, но MyBrowser_DocumentCompleted никогда не получает каких-либо хиты:

public partial class mainForm : Form 
{ 
    WebBrowser MyBrowser = new WebBrowser(); 

    // .. 

    private void mainForm_Load(object sender, EventArgs e) 
    { 
     MyBrowser.Navigate("https://www.hudhomestore.com/Listing/PropertySearchResult.aspx?sState=MI"); 
    } 

    void MyBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
    { 
     HtmlElementCollection classButton = MyBrowser.Document.All; 
     foreach (HtmlElement element in classButton) 
      if (element.GetAttribute("ExportExcel") == "button") 
       element.InvokeMember("click"); 
    } 

} 
+0

Попробуйте обернуть свой код внутри события 'webBrowser.DocumentCompleted', которое решит эту проблему. –

+0

@DavidR Спасибо. Можете ли вы проверить мое редактирование, пожалуйста? –

+0

Можете ли вы установить точку отладки и проверить, прекращено ли выполнение? –

ответ

1

Получить все Anchor tags и нашли необходимый tag, который вы хотите нажмите кнопку. Я сделал код, попробую это.

 HtmlElementCollection links = MyBrowser.Document.GetElementsByTagName("A"); 
     foreach (HtmlElement link in links) 
     { 
      if (link.InnerText!=null && link.InnerText.Equals("Export to")) 
       link.InvokeMember("Click"); 
     } 

Надеюсь, это поможет.

+0

Adeel Спасибо, но я до сих пор не могу «_hit_». 'MyBrowser_DocumentCompleted' не выполняется. Разве весь этот код работал на вашей машине? –

+0

И я добавляю ваш код в 'mainForm_Load',' MyBrowser.Document' по-прежнему равен нулю и появляется сообщение об ошибке –

+0

Я не создал экземпляр элемента управления 'WebBrowser', я просто перетащил его в форму, зарегистрировал события, это Это. Вы должны попробовать, если это не сработает, отправьте комментарий здесь. С уважением! –

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