2

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

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

谢谢

4

1 回答 1

0

在实践中,sleep推荐使用。根据浏览器和 JavaScript 代码执行其操作所花费的时间量,您可能会遇到竞争条件并最终得到仅有时有效的测试

如果您正在考虑使用睡眠,请改用 wait_until。在您真正需要使用它的情况下,它将使您的测试代码对时间问题更具弹性。

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

在您的情况下,您可能想尝试以下示例:

# 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或其他标识属性的容器元素。classname

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

于 2013-02-21T00:02:51.833 回答