2011-02-04 67 views
3

我一直在努力,现在的几天,仍然有过编程点击这个div没有成功。所有其他输入字段和按钮都工作正常使用InvokeMember(“点击”)和的RaiseEvent(“点击”),但我无法点击以下DIV:如何编程点击在网络浏览器一个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的ID吗?

,因为在我的情况,我有DIV级“泵请求”,所以(如果我写“泵请求”,如上面的例子somecontrol)还给我空在someDiv

<div class="pump request"> onclick="$(this).push('kjhzsd94vibjktj584ed01', null, event)" </div> 

@Cameron

是的,我进入了休息期;但问题是如果条件永远不会返回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高根

是啊,我只是做了e2.GetAttribute手表(“类”)和奇怪的事情发生了被读取实际DIV(我想点击)类的值是空的:-o

+2

你尝试调试,看看e2.GetAttribute( “类”)** **不回? – 2011-02-04 16:59:11

回答

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

所有这一切都可能通过反射。

2

您可以通过使用Web浏览器控件尝试这段代码。

// 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 

       } 



      } 
4

试试这个

if (e2.GetAttribute("className").Contains("pump request")) 
{ 
    e2.InvokeMember("Click");    
}