我正在为使用 Vaadin 框架开发的 Java 应用程序编写测试。对于我使用Robot Framework的测试。在某些步骤中,我必须使用机器人框架命令,例如执行 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
提前致谢。