簡體   English   中英

無法獲取Web瀏覽器文件的元素

[英]Can't get element of web browser document

我正在從WinForms-Application做一些webscraping。 這是我想要從中獲取的瀏覽器文檔的片段:

<div class="div1" id="id1" data-on-choice="asdf">
<h4>Target:</h4>                                                            
<table class="table1" style="width: 100%;">
    <tbody><tr>
        <td>
            <div class="div2">
                <label>aa</label>
                <label>ab</label>
                <label>ac</label>
            </div>                                                                  
            <div class="div3" id="id2">
                <span class="span1" role="status" aria-live="polite"></span>
            </div>
            <a class="anchor1" style="display: inline;" href="#"></a>                       
        </td>
    </tr>
    <tr>
        <td>
            <div class="div4">
                <span></span>
                <span></span>
                <span></span>
            </div>
        </td>
    </tr>
</tbody></table>

我想要獲取並點擊的HtmlElement將是錨“anchor1”。 請注意,我已經做了很多次類似的事情,但我似乎無法得到這個特殊的元素。 即使我打印文檔的所有錨元素的InnerHtml,也沒有這個元素的行。

Html-Agility-Pack不是一個選項,因為我的應用程序太大而無法重新編碼。 html不在我的控制之下,所以將id分配給元素,......也不是一個選項。

在我看來,這應該做的伎倆,它不起作用:

HtmlElement elementToClick = browser.Document.GetElementsByTagName("a")
         .Cast<HtmlElement>()
         .FirstOrDefault(m => m.GetAttribute("class") == "anchor1");
elementToClick.InvokeMember("click");

由於class是一個特殊名稱,因此它不返回該值。 您應該使用className 下面的代碼段為我工作:

var elementToClick = browser.Document
            .GetElementsByTagName("a")
            .Cast<HtmlElement>()
            .FirstOrDefault(m => m.GetAttribute("className") == "anchor1");

你可以通過調用這樣的javascript調用點擊你需要標簽:

browser.InvokeScript("document.querySelector('a.anchor1').click()");

您調用的腳本將在Web瀏覽器控件上加載的Web文檔上運行。

有關InvokeScript的更多信息,請參閱WebBrowser.InvokeScript方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM