我已经尝试了几天,仍然没有成功地以编程方式点击这个div。所有其他输入字段和按钮使用InvokeMember(“click”)和RaiseEvent(“onclick”)正常工作,但我无法点击以下div:
<div class="pump request"> onclick="$(this).push('kjhzsd94vibjktj584ed01', null, event)" </div>
这个div在页面上重复多次,但我只想点击第一次出现。
这是我到目前为止所做的:
HtmlElementCollection c1 = wbc1.document.GetElementsByTagName("div");
foreach (HtmlElement e2 in c1)
{
if (e2.GetAttribute("class").Contains("pump request"))//also this condition is not returning true
{
e2.RaiseEvent("onclick");
}
}
@bleepzter
如果“somecontrol”是div的一个类而不是div的id呢?
因为在我的情况下我有div类“泵请求”所以(如果我在上面的例子中写“泵请求”作为somecontrol)它在someDiv中返回Null
<div class="pump request"> onclick="$(this).push('kjhzsd94vibjktj584ed01', null, event)" </div>
@Cameron
是的,我确实进入了休息时间;但问题是if条件永远不会返回true,所以 HtmlElementCollection c1 = wbc1.document.GetElementsByTagName("div");
foreach (HtmlElement e2 in c1)
{
if (e2.GetAttribute("class").Contains("pump request"))//--> This condition is not returning true
{
e2.RaiseEvent("onclick");
break;
}
}
@Ilya Kogan
是的,我刚刚在e2.GetAttribute(“class”)上做了一个手表,发生了奇怪的事情,正在阅读实际的div(我想点击),类的值是空的:-o
答案 0 :(得分:4)
尝试这个
if (e2.GetAttribute("className").Contains("pump request"))
{
e2.InvokeMember("Click");
}
答案 1 :(得分:2)
您可以使用网络浏览器控件尝试这段代码。
// browser is the web browser control
HtmlElementCollection col = browser.Document.GetElementsByTagName("div");
foreach (HtmlElement helemnt in col)
{
if (helemnt.InnerText !=null && helemnt.InnerText=="something")
{
helemnt.InvokeMember("Click");
break; // break the loop
}
}
答案 2 :(得分:0)
很简单。下面是一个假设您的浏览器控件名为browser
的示例,您要查找的div名为somecontrol
(即div的ID为somecontrol
):
HtmlElement someDiv = browser.Document.All["somecontrol"];
object someDivElement = someDiv.DomElement;
MethodInfo clickMethod = someDivElement.GetType().GetMethod("click");
clickMethod.Invoke(someDivElement, null);
这一切都可以通过反思来实现。