javascript - 如何使用 Watir 单击由 javascript 生成的元素?

标签 javascript jsf jakarta-ee primefaces watir

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

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

谢谢

最佳答案

在实践中,使用sleepnot 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)。尝试找到该按钮的一些标识属性,或具有 idclassname 或其他标识属性的容器元素。

但是,目前我不确定是否有一种方法可以检测元素是否由 JavaScript 生成或添加到 DOM。

关于javascript - 如何使用 Watir 单击由 javascript 生成的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14263228/

相关文章:

java - 数据映射器模式的数据一致性

javascript - 使用 primefaces 访问 Jquery UI

java - 处理jsf数据表

java - 在 Java EE 应用程序中处理大型记录

java - 在 Java Web 应用程序中从应用程序服务器外部提供静态数据的最简单方法

javascript - 有什么方法可以使用 jQuery 过滤多个条件吗?

javascript - 使用 js 文件内的 phpfile 输出作为变量

javascript - 用空格替换破折号(连字符)

javascript - 使用两个 setTimeout 函数后图像变得疯狂

java - Glassfish/JBoss/Geronimo 是虚拟机吗?