InvokeMember(“ click”)webBrowser帮助

问题描述 投票:1回答:2

我正在尝试通过weBrowser使网页自动化,而我要单击的按钮没有ID,只有一个值。这是它的html代码:

<td width='10%' align='center'><button class="buttonf" onclick="window.location='staticpage.php?accept=123456' ">Accept</button></td>

我不能使用GetElementById,因为按钮没有ID。如果我这样做

HtmlElement goButton = this.webBrowser1.Document.All["Accept"];
goButton.InvokeMember("click");

我的脚本停止显示突出显示“ goButton.InvokeMember(” click“);”的空引用错误。“>

如果我这样做

var inputControls = (from HtmlElement element in webBrowser1.Document.GetElementsByTagName("input") select element).ToList();
            HtmlElement submitButton = inputControls.First(x => x.Name == "Accept");

我的脚本在“ HtmlElement SubmitButton”行中给我一个“序列中没有匹配的元素”错误有时页面上有多个“接受”按钮中的一个,所以我需要能够分辨出每个按钮之间的区别,或者至少能够在不破坏脚本的情况下单击一个按钮。

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

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

您正在尝试查找按钮标签,对吗?如果是这样,GetElementsByTagName("input")可能应该是GetElementsByTagName("button")。按钮的名称也不会是“接受”,它将是InnerText属性。如果不确定按钮是否存在,最好使用FirstOrDefault并检查是否为空,因为'.First'将在没有匹配项的情况下崩溃并烧毁。

关于如果有多个“接受”按钮,如何分辨按钮之间的区别,我认为需要多加思考。

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

c# .net browser
2个回答
3
投票

您正在尝试查找按钮标签,对吗?如果是这样,GetElementsByTagName("input")可能应该是GetElementsByTagName("button")。按钮的名称也不会是“接受”,它将是InnerText属性。如果不确定按钮是否存在,最好使用FirstOrDefault并检查是否为空,因为'.First'将在没有匹配项的情况下崩溃并烧毁。


0
投票

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

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


0
投票

需要帮助的单击按钮HTML没有ID

© www.soinside.com 2019 - 2024. All rights reserved.