【问题标题】:C# WebBrowser - How to Click on something without idC# WebBrowser - 如何点击没有 id 的东西
【发布时间】:2014-01-24 22:01:43
【问题描述】:

我有一个网络浏览器,我想点击这样的东西:

<a href="javascript:insertUnit($('#unit_input_axe'), 0)"></a>

这是我的代码,但它不起作用:

HtmlElementCollection links = _webB.Document.GetElementsByTagName("A");

            foreach (HtmlElement link in links)
            {
                if (link.OuterHtml.Equals("<a href=" + "javascript:insertUnit($('#unit_input_axe'), 0)" + ">(0)</a>"))
                link.InvokeMember("click");
            }

我需要帮助! 谢谢。

【问题讨论】:

  • 您的问题是否与链接未找到或已找到但未单击有关?您可以使用调试器轻松检查。

标签: c# html .net dom webbrowser-control


【解决方案1】:

最简单的解决方案是给 'a' 元素添加一个“id”属性,然后通过它的 id 属性找到这个元素,而不是通过整个 href 表达式来搜索它。

在您当前的 Equals 表达式中,在开始和结束标记之间还有 (0),这在原始表达式中不存在。

也请尝试改变

HtmlElementCollection links = _webB.Document.GetElementsByTagName("A");

收件人:

HtmlElementCollection links = _webB.Document.GetElementsByTagName("a");

因为我记得 GetElementsByTagName 方法是区分大小写的。

【讨论】:

    【解决方案2】:

    试试 RaiseEvent("onclick")。

    类似帖子:RaiseEvent("onchange")

    【讨论】:

      【解决方案3】:

      我看不出你的平等比较怎么会是真的。你在比较:

      <a href="javascript:insertUnit($('#unit_input_axe'), 0)">(0)</a>
      

      与:

      "<a href=" + "javascript:insertUnit($('#unit_input_axe'), 0)" + ">(0)</a>"
      

      第二个属性值周围没有逗号。所以我认为应该是:

      if (link.OuterHtml.Equals("<a href=\"javascript:insertUnit($('#unit_input_axe'), 0)\">(0)</a>"))
      

      除此之外,我使用WebBrowser.Document.InvokeScript 并取得了一些成功。由于您似乎已经知道要执行的特定函数名称和值,因此您可以避免选择特定的 DOM 项(A 标记)而直接执行 javascript。

      这里有一个好看的指南:http://www.codeproject.com/Tips/60924/Using-WebBrowser-Document-InvokeScript-to-mess-aro

      【讨论】:

        【解决方案4】:

        我认为从标记“A”更改为“a”解决了这个问题。 这是我正在工作的代码。谢谢大家的帮助!

        HtmlElementCollection links = _webB.Document.GetElementsByTagName("a");
        
                    foreach (HtmlElement link in links)
                    {
                        if (link.OuterHtml.ToString().Contains("unit_input_axe"))
                            link.InvokeMember("click");
                    }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-11-05
          • 1970-01-01
          • 1970-01-01
          • 2012-10-09
          • 2016-10-26
          • 1970-01-01
          • 1970-01-01
          • 2011-05-04
          相关资源
          最近更新 更多