C# 调用成员(“单击”)webBrowser帮助
我正试图通过weBrowser自动化一个网页,我试图单击的按钮没有ID,只有一个值。下面是它的html代码: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
<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
}