我正在使用名为 primefaces 的库开发基于 jsf 的应用程序。 Primefaces 生成一个网页,其中包含生成一些按钮的 javascript 函数。按钮在页面的源代码中是不可见的(比如 ,所以 Watir 不能点击这些按钮来测试某些东西。
我的问题是:是否可以使用 Watir 恢复由 javascript 函数生成的按钮的 ID 或类?
谢谢
最佳答案
在实践中,使用sleep
是not recommended .根据浏览器和 JavaScript 代码执行其操作所花费的时间,您可能会遇到竞争条件并最终得到仅在有时 有效的测试。
If you're considering using sleep, use wait_until instead. It will make your test code more resilient to timing issues in those cases where you really need to use it.
正如@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 生成或添加到 DOM。
关于javascript - 如何使用 Watir 单击由 javascript 生成的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14263228/