C# 调用成员(“单击”)webBrowser帮助

C# 调用成员(“单击”)webBrowser帮助,c#,.net,browser,C#,.net,Browser,我正试图通过weBrowser自动化一个网页,我试图单击的按钮没有ID,只有一个值。下面是它的html代码: <td width='10%' align='center'><button class="buttonf" onclick="window.location='staticpage.php?accept=123456' ">Accept</button></td> 我的脚本停止显示nullreference错误,突出显示“goButto

我正试图通过weBrowser自动化一个网页,我试图单击的按钮没有ID,只有一个值。下面是它的html代码:

<td width='10%' align='center'><button class="buttonf" onclick="window.location='staticpage.php?accept=123456' ">Accept</button></td>
我的脚本停止显示nullreference错误,突出显示“goButton.InvokeMember(“单击”);”

如果我这样做

var inputControls = (from HtmlElement element in webBrowser1.Document.GetElementsByTagName("input") select element).ToList();
            HtmlElement submitButton = inputControls.First(x => x.Name == "Accept");
我的脚本在“HtmleElement submitButton”行给我一个“Sequence contains no matching element”错误 有时候页面上有不止一个接受按钮,所以我需要能够分辨出每一个按钮之间的区别,或者至少能够在不中断脚本的情况下单击一个按钮


对此的任何帮助都将不胜感激

页面中似乎没有匹配的元素。您确定按钮位于当前页面上,而不是嵌入框架中吗


无论如何,您需要进行错误检查。不应故意引发NullReferenceException。

您正在尝试查找按钮标记,对吗?如果是这种情况,
GetElementsByTagName(“输入”)
可能应该是
GetElementsByTagName(“按钮”)
。按钮的名称也不会是Accept,这将是属性。如果您不确定按钮是否存在,那么最好使用并检查null返回值,因为如果不匹配,“.First”将崩溃并烧掉

至于如果有不止一个接受按钮,你如何区分按钮之间的区别,我认为这需要更多的思考

此代码未经测试,但可能更接近您需要的代码

var buttonControls = (
    from HtmlElement element 
    in webBrowser1.Document.GetElementsByTagName("button") 
    select element
).ToList();

HtmlElement submitButton = 
    buttonControls.FirstOrDefault(x => x.InnerText == "Accept");

if (submitButton != null) {
    submitButton.InvokeMember("click");
} else {
    //didn't find it
}

是的,代码成功了,谢谢大家的帮助!现在我只需要弄清楚如何区分每个按钮之间的差异
var buttonControls = (
    from HtmlElement element 
    in webBrowser1.Document.GetElementsByTagName("button") 
    select element
).ToList();

HtmlElement submitButton = 
    buttonControls.FirstOrDefault(x => x.InnerText == "Accept");

if (submitButton != null) {
    submitButton.InvokeMember("click");
} else {
    //didn't find it
}