2011-02-04 7 views
3

私は数日間試していますが、このdivをプログラムでクリックしてもまだ成功していません。他の入力フィールドとボタンのすべてがInvokeMember(「クリック」)および(「onclickの」)RaiseEventを使用して正常に動作しているが、私は次のdivをクリックすることができません:このdiv要素は数回繰り返されるWebブラウザでdivをプログラムでクリックするにはどうすればよいですか?

<div class="pump request"> onclick="$(this).push('kjhzsd94vibjktj584ed01', null, event)" </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を返しますうん、私は休憩に入った。しかし、問題は、私はちょうどe2.GetAttribute上の時計(「クラス」)と奇妙な事をした状態がそう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コーガン

いや、実際に読んされていることが起こっていますdiv(私がクリックしたい)クラスの値が空だった:-o

+2

は、デバッグしようとe2.GetAttribute( "クラス")**は**返さないものを見ましたか?してみてください –

+0

DOMから読み取られるクラス属性に、ソースに書き込まれたのとまったく同じ順序のクラスが含まれているという保証はありません。また、最初の要素だけが必要な場合は、 'if'の最後に' break; 'ステートメントがあるはずです – Cameron

答えて

0

それは簡単です。ここでbrowserと呼ばれ、お使いのブラウザコントロールを想定例であり、あなたが探しているdivが(すなわち、div要素のidがあるsomecontrolsomecontrolと呼ばれている。

HtmlElement someDiv = browser.Document.All["somecontrol"]; 
object someDivElement = someDiv.DomElement; 

MethodInfo clickMethod = someDivElement.GetType().GetMethod("click"); 
clickMethod.Invoke(someDivElement, null); 

このすべては、反射を介して可能です。

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 

       } 



      } 
4

この1

if (e2.GetAttribute("className").Contains("pump request")) 
{ 
    e2.InvokeMember("Click");    
} 
関連する問題