2011-02-04 30 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");    
}