我正在使用名为primefaces的库开发基于jsf的应用程序。 Primefaces生成一个包含生成一些按钮的javascript函数的网页。在页面的源代码中看不到按钮(例如< button> ...< / button>,因此Watir无法点击这些来测试某些内容。
我的问题是:是否可以使用Watir恢复javascript函数生成的id或类按钮?
由于
答案 0 :(得分:0)
实际上,使用sleep
是not 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
)。尝试为该按钮找到一些标识属性,或者使用id
,class
,name
或其他一些标识属性查找容器元素。
但是,目前我不确定是否有办法检测是否通过JavaScript生成或添加了元素。