Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Can';无法获取web浏览器文档的元素_C#_Html_Webbrowser Control - Fatal编程技术网

C# Can';无法获取web浏览器文档的元素

C# Can';无法获取web浏览器文档的元素,c#,html,webbrowser-control,C#,Html,Webbrowser Control,我正在用WinForms应用程序做一些网页垃圾处理。下面是我想从浏览器文档中提取的一个片段: <div class="div1" id="id1" data-on-choice="asdf"> <h4>Target:</h4> <table class="table1" style="width: 100%;"> <

我正在用WinForms应用程序做一些网页垃圾处理。下面是我想从浏览器文档中提取的一个片段:

<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>

目标:
aa
ab
交流电

我想要得到并点击的HtmlElement将是锚定“anchor1”。请注意,我已经做了很多次类似的事情,但我似乎无法得到这个特定的元素。即使在打印文档中所有锚元素的InnerHtml时,该元素也没有一行

Html敏捷包不是一个选项,因为我的应用程序太大,无法重新编码。html不在我的控制之下,因此将id分配给元素。。。这也不是一种选择

在我看来,这应该可以奏效,但它不起作用:

HtmlElement elementToClick = browser.Document.GetElementsByTagName("a")
         .Cast<HtmlElement>()
         .FirstOrDefault(m => m.GetAttribute("class") == "anchor1");
elementToClick.InvokeMember("click");
HtmlElement-elementToClick=browser.Document.GetElementsByTagName(“a”)
.Cast()
.FirstOrDefault(m=>m.GetAttribute(“类”)==“主播1”);
elementToClick.InvokeMember(“单击”);

因为类是一个特殊的名称,所以它不会返回该名称的值。您应该使用className。下面的片段对我很有用:

var elementToClick = browser.Document
            .GetElementsByTagName("a")
            .Cast<HtmlElement>()
            .FirstOrDefault(m => m.GetAttribute("className") == "anchor1");
var elementToClick=browser.Document
.GetElementsByTagName(“a”)
.Cast()
.FirstOrDefault(m=>m.GetAttribute(“类名”)==“主播1”);

您可以通过如下方式调用javascript来调用所需的标记:

browser.InvokeScript("document.querySelector('a.anchor1').click()");
调用的脚本将在web浏览器控件上加载的web文档上运行

有关InvokeScript的更多信息,请参阅

非常感谢。你们能解释一下为什么类不能像其他属性一样工作吗?他们就是这样实现的。他们在“要在HtmleElement上设置class属性,在指定SetAttribute的第一个参数时必须将该属性作为className引用”。我想他们也应该在GetAttribute中注意到它