Vaadin フレームワークを使用して開発された Java アプリケーションのテストを作成しています。テストにはRobot Frameworkを使用しています。一部のステップでは、 execute javascriptなどのロボット フレームワーク コマンドを使用する必要があります。
たとえば、コンポーネントを見つけるには、次のコマンドを実行する必要があります。
execute javascript document.getElementById('button-create').click()
問題なく動作します。Click Element
Vaadin はページ全体が読み込まれるまで待機せず、実行時に一部の ID がまだ割り当てられていないため、プリミティブのようなものは機能しません。
click
残念ながら、このアプリケーションは、一部のコンポーネントがイベントではなくイベントに反応するように開発されていますmousedown
。つまり、Chrome の Java コンソールで次のコマンドを実行できます。
document.getElementsByClassName('table-cell-wrapper')[1].mousedown();
動作は問題なく実行されます。ここまでは順調ですね。
残念ながら、ロボットフレームワークで同じことをしようとすると
execute javascript document.getElementsByClassName('table-cell-wrapper')[1].mousedown();
次のエラーが表示されます。
Executing JavaScript:
document.getElementsByClassName('table-cell-wrapper')[1].mousedown();
20131029 12:22:12.445 : INFO : </td></tr><tr><td colspan="3"><a href="selenium- screenshot-1.png"><img src="selenium-screenshot-1.png" width="800px"></a>20131029 12:22:12.453 : FAIL :
WebDriverException: Message: u'document.getElementsByClassName(...)[1].mousedown is not a function' ;
mousedown
問題は、Javascript と Webdriver を使用して特定の要素でイベントをトリガーするにはどうすればよいかということです。
私の環境は次のとおりです。
RIDE 1.2.1 running on Python 2.7.5.
Robot Framework 2.8.1
Library Selenium2Library
Library Screenshot
Library Dialogs
Library Collections
前もって感謝します。