我正在使用一个名为 primefaces 的库开发一个基于 jsf 的应用程序。Primefaces 生成一个网页,其中包含生成一些按钮的 javascript 函数。按钮在页面的源代码中不可见(如 <button>...</button>,因此 Watir 无法单击这些来测试某些内容。
我的问题是:是否可以使用 Watir 恢复由 javascript 函数生成的按钮的 ID 或类别?
谢谢
我正在使用一个名为 primefaces 的库开发一个基于 jsf 的应用程序。Primefaces 生成一个网页,其中包含生成一些按钮的 javascript 函数。按钮在页面的源代码中不可见(如 <button>...</button>,因此 Watir 无法单击这些来测试某些内容。
我的问题是:是否可以使用 Watir 恢复由 javascript 函数生成的按钮的 ID 或类别?
谢谢
在实践中,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
或其他标识属性的容器元素。class
name
但是,目前我不确定是否有一种方法可以检测元素是否由 JavaScript 生成或添加到 DOM 中。