第一周进行 watir-webdriver 和 Web 应用程序测试,因此仍在尝试概括一些概念。
有这个 javascript 元素:
<input type="submit" class="button" value="Search" name="_target0">
browser.button(:value, "Search").exists?
=> "true"
browser.button(:value, "Pesquisar").present?
=> true
browser.button(:name, "_target0").value
=> "Search"
这实际上并不会驱动按钮被点击,
browser.button(:name, "_target0").click
所以我使用以下任一方法让驱动的 Firefox 单击按钮
browser.button(:name, "_target0").fire_event('on_click')
browser.button(:name, "_target0").when_present.click
但它们之间有什么区别呢?
就它们之间的差异而言:
-
.click
= 模拟在对象上单击鼠标左键。
-
.fire_event
= 执行 JavaScript,即使该 JavaScript 可能无法通过鼠标单击正常访问。
-
when_present.click
= 等待对象
既可用又出现在可视区域(完整浏览器
窗口),然后再尝试单击。
when_present
当您的站点使用 AJAX 并且与一个对象交互会导致另一个对象最终出现时,此选项很有用。用一个.click
可能会尝试在第二个对象可用之前单击它,并且脚本将失败。
您的页面可能包含 AJAX 表单,并且您尝试与之交互的按钮不会立即加载,而是在短暂延迟后加载:
- 输入文本字段
- 单击另一个按钮
- 页面完成内容生成
- etc.
由于 fire_event 并不查找按钮的物理表示,而是查找源中的 JS 事件,因此可以在按钮存在/可见/可操作之前使用它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)