如何用Watir点击javascript生成的元素?

时间:2013-01-10 17:00:00

标签: javascript jsf java-ee primefaces watir

我正在使用名为primefaces的库开发基于jsf的应用程序。 Primefaces生成一个包含生成一些按钮的javascript函数的网页。在页面的源代码中看不到按钮(例如< button> ...< / button>,因此Watir无法点击这些来测试某些内容。

我的问题是:是否可以使用Watir恢复javascript函数生成的id或类按钮?

由于

1 个答案:

答案 0 :(得分:0)

实际上,使用sleepnot recommended。根据浏览器和时间的长短而定JavaScript代码用于执行其操作,您可能会遇到竞争条件并最终只能使用有时的测试。

  

如果您正在考虑使用睡眠,请改用wait_until。在您真正需要使用它的情况下,它将使您的测试代码更能适应时序问题。

正如@JustinKo建议的那样,你可能应该使用Watir的wait methods来等待元素显示在页面上。

在你的情况下,你想尝试这些例子:

# Assuming your browser object is named: $b
#Ex: $b = Watir::Browser.new :chrome
$b.button(:id => 'my_button').wait_until_present
Watir::Waiter::wait_until { $b.button(:id => 'my_button').visible? }

如果您在页面上找不到元素时遇到问题,可能需要查看FireBug中的源代码或Chrome中的开发人员工具控制台(Shift+Ctrl+I)。尝试为该按钮找到一些标识属性,或者使用idclassname或其他一些标识属性查找容器元素。

但是,目前我不确定是否有办法检测是否通过JavaScript生成或添加了元素。