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



我正在使用一个名为primefaces的库开发一个基于jsf的应用程序。Primefaces生成一个包含生成一些按钮的javascript函数的网页。按钮在页面的源代码中不可见(如<按钮>…& lt;/button>,所以Watir不能点击这些来测试一些东西。

我的问题是:是否有可能恢复由javascript函数与Watir生成的按钮的id或类?

谢谢

在实践中,不建议使用sleep。视乎浏览时间而定&JavaScript代码执行其动作时,您可能会遇到竞争条件,并以只能在有时工作的测试结束。

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

正如@JustinKo所建议的,您可能应该使用Watir的wait方法来等待,直到元素显示在页面上。

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

# 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生成或添加到DOM。

相关内容

  • 没有找到相关文章

最新更新