2017-03-08 2 views
0

最初にロードされないウェブページでは、HTML select(つまりドロップダウン)で作業しています。値がロードされるのは、onfocus JSイベントが実行されたときだけです。 GWTコントロールであることに注意してください。Seleniumを使用してGWTのドロップダウンリストにフォーカスを合わせてクリックしてください

ここにドロップダウンのDOMレンダリングがあります。実際にドロップダウンに値をロードonfocusイベント注:

<select id="Field1" class="select not_disabled" onchange="clearOperators(Operator1); addOperators(Field1,Operator1); adjustInput(Field1, 1);" onfocus="loadValues(Field1);" style="width:20em;" name="Field1"> 
</select> 

問題は、ウィンドウにフォーカスがある場合を除き要素上でのクリックが登録取得されていないということです。したがって、値はロードされません。

私は私のコードでこれを持っており、これは効果なしで実行されます。

// bring the focus on the dropdown 
((JavascriptExecutor) webDriver).executeScript("return document.getElementById('Field1').focus;", dropdownElement); 

// click on it to load the values 
dropdownElement.click(); 

は、偶数番目の要素にイベントを焼成する古い方法を試してみました。動作しませんでした:

JavascriptLibrary javascript = new JavascriptLibrary(); 

javascript.callEmbeddedSelenium(webDriver, "triggerEvent", dropdownElement, "blur"); 

を私はまた、これらの提案のいくつかを試してみたが、どれも助けなかっ:

Correct way to focus an element in Selenium WebDriver using Java

https://groups.google.com/forum/#!msg/selenium-users/jk59XG2TQk8/xbaskp9uFnQJ

は、誰かが私は値をロードするために何ができるかを提案でしたドロップダウン?私はFirefox 47でSelenium 2でJavaを使用しています。

答えて

0

私はこれを行う方法を見出しました。 UIテストにはそれほど望ましいソリューションではありませんが、「実際のユーザー」の動作を模倣するものではないため、正常に動作します。

私のテストクラス内からonfocus関数を呼び出すと、値のロードが行われます。

profile.setPreference("focusmanager.testmode",true); 

は、それが誰かの役に立てば幸い:

(String) ((JavascriptExecutor) webDriver).executeScript("return loadValues(Field1);", dropdownElement); 

さらに、私は、Firefoxのプロファイルにこの設定を追加しました。

関連する問題