2012-01-13 8 views
0

Javascriptドロップダウンから項目を選択する際に問題があります(ドロップリスト内の項目はDOMツリー内に隠されていません。リンクがクリックされるまで)。私はこのような方法でアクションクラスを使用して試してみました:WebDriver Select Option from Javascript CSSドロップメニューはコードではなくIDEで動作します

Actions cursor = new Actions(driver); 
    cursor.moveToElement(linkThataDropsMenu).perform(); 
    cursor.click(); 

私はclickAndWait()関数を使用してみましたが、それは明らかにJavaのwebdriverをライブラリに存在しない、と私は一時停止とクリックの多くのバリエーションを試してみました私のコードで、2回クリックすることを含む。 clickAndHold()も何もしません。

以下は、メニューが生成された後のDOMツリーです。クリックで変更唯一のものは、ここで奇妙な部分は、しかしDIV CLASS =「メニュー」

<div id="divIdActive_2" class="data number active" style="min-height: 21px;"> 
<a class="opencnl" href="#"> 
    <span id="opencnlSpan" class="active" style="background-color: 
          transparent;">800-852-2222</span> 
</a> 
<img class="tollFree" title="Display name(s) for Toll free function properly on 
        Verizon Wireless devices, but may be omitted by other carriers on 
        their devices." src="img/nil.gif"> 
<input id="customNum" type="hidden" value="8008522222" name="number_2"> 
<div class="menu"> 
    <a class="edit" href="#">Change Custom Number</a> 
    <a class="copy" href="#">Copy Settings for 0 Selected Lines</a> 
    <a class="clear" href="#">Clear Settings For this Line</a> 
</div> 
</div> 

の挿入ださ - 私は、メニューがクリック()またはclickAndWait()を使用して、IDEからドロップするように取得することができ、そして正確に同じロケータ。 Javaコードから、ロケータを使用して、クリックしたい要素のテキストを集めることができますが、要素をクリックすることはできません。 Javaコードには、完全にうまく動作する他の何百ものクリックコマンドがありますが、ここでは動作しません。何か案は?少なくとも読んでくれてありがとう!

答えて

0

私はそれを手に入れました!そのトリックは、アイテムの上にマウスを置いてクリックした後、再びアイテムの上にカーソルを置いて、新たにレンダリングされたオブジェクトをつかむことでした。私の推測は、クリックが起こったらすぐに、カーソルが実行されたすべてのことをやって、ガベージコレクションされたので、2番目のmoveToElement()を追加する前です。それは私のコードです - 誰かを助けることを願っています!

0

isDisplayed()関数を使用してみましたか?どのオプションをクリックしても、クリックする前に表示する必要があります。したがって、セレニウム1が持つclickAndWait()の代わりに、element.isDisplayed()があります。これには暗黙の待機があります(これは、ブラウザドライバの作成時に設定され、ドキュメントをチェックします)。デフォルトでは、SeleniumはisDisplayed関数に遭遇すると、その前に進むまでにかなりの時間待っています。

+0

お返事ありがとうございました。しかし、私の問題の一部は、要素がJavascriptによって作成されている(表示されていない/表示されていない)ため、isDisplayed()が機能しないことです。しかし、それ以外には、待ち行列に基づくものは、クリックの直後に新しい要素をつかんでしまって既に消えてしまっているので、何の助けにもならないようには思えないので、待機機能を適用するまでには、あまりにも正しい?待機しているのは、それらの要素が存在していれば(マイクロソフトが生成されていれば)、マイクロ秒から私をさらに遠ざけるだけです。 – TenFour

関連する問題