[英]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.