【问题标题】:C# WebBrowser how to click a buttonC# WebBrowser 如何点击一个按钮
【发布时间】:2015-04-10 19:02:45
【问题描述】:

我尝试制作一个程序,我需要使用我的程序单击一个按钮 webBrowser1.Document.GetElementById("submit").InvokeMember("click");

这不起作用,因为此按钮没有 ID。
这是按钮的代码:

<a class="buttonMtel" tabindex="6" onclick="document.forms['SMSForm'].submit()">
    <span>Изпрати</span>
</a>
<span>Изпрати</span>.

请帮忙。谢谢。

【问题讨论】:

  • 如果它是默认按钮,那么您可以发送“Enter”键。告诉我你是否想要我可以发布答案。

标签: c# class button click


【解决方案1】:

假设您的按钮是唯一带有class="buttonMtel" 的锚点,您可以使用GetElementByTagName 方法,然后找到所需的元素:

var anchors = webBrowser1.Document.GetElementByTagName("a");
foreach (HtmlElement anchor in anchors)
{
    if (anchor.GetAttribute("class") == "buttonMtel") 
    {
        // we have found the button => click on it
        anchor.InvokeMember("click");
        break;
    }
}

或者如果您更喜欢 LINQ:

var anchor = webBrowser1
    .Document
    .GetElementByTagName("a")
    .Cast<HtmlElement>()
    .FirstOrDefault(anchor => anchor.GetAttribute("class") == "buttonMtel");
if (anchor != null)
{
    anchor.InvokeMember("click");
}

另一方面,如果您的 DOM 中有多个带有 class="buttonMtel" 的锚点,您将需要一种不同的方法。根据 DOM 的实际结构,您可能需要先定位某个父元素,然后再找到所需的按钮。

【讨论】:

  • Ty 但是在这里它给了我错误 if (anchor.GetAttribute("class") == "buttonMtel") { // 我们找到了按钮 => 点击它 anchor.InvokeMember("click ");休息; } 在锚点中没有 GetArttibute 或 invokeMember
  • 好的,使用foreach (HtmlElement anchor in anchors) 代替foreach (var anchor in anchors)。我已经更新了我的答案来说明这一点。
  • 它不起作用可能是因为这个类中有2个按钮
  • 然后您必须识别一些包含所需按钮的唯一父元素。并首先找到这个父元素。如果不了解您的 DOM 结构,很难更具体。另一方面,如果您知道您的 DOM 包含 2 个这样的元素,您可以修改代码以选择第二个。
猜你喜欢
  • 2011-06-28
  • 1970-01-01
  • 2011-09-08
  • 1970-01-01
  • 2011-12-15
  • 2014-12-11
  • 2014-02-16
  • 1970-01-01
  • 2012-10-09
相关资源
最近更新 更多