C#WebBrowser - 如何点击没有id的东西

时间:2014-01-23 20:27:13

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

我有一个WebBrowser,我想点击这样的东西:

<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");
            }

我需要帮助! 谢谢。

4 个答案:

答案 0 :(得分:0)

最简单的解决方案是将“id”属性添加到“a”元素,然后通过其id属性查找此元素,而不是通过整个href表达式搜索此元素。

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

请尝试更改

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

要:

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

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

答案 1 :(得分:0)

尝试RaiseEvent(“onclick”)。

类似文章:RaiseEvent("onchange")

答案 2 :(得分:0)

我看不出你的平等比较是如何真实的。你正在比较:

<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

答案 3 :(得分:0)

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

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

            foreach (HtmlElement link in links)
            {
                if (link.OuterHtml.ToString().Contains("unit_input_axe"))
                    link.InvokeMember("click");
            }