第一周使用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
但它们之间有什么区别?
答案 0 :(得分:2)
就它们之间的差异而言:
.click
=模拟对象上的鼠标左键。.fire_event
=即使通过鼠标点击正常访问也可能无法访问javascript。when_present.click
=等待对象
两者都可用并出现在可视区域(完整浏览器
窗口)在尝试点击之前。 when_present
非常有用,并且与一个对象进行交互会导致最终出现另一个对象。使用.click
可能会尝试在第二个对象可用之前单击它,脚本将失败。
您的网页可能包含一个AJAX表单,并且您尝试与之交互的按钮不会立即加载,但在短暂延迟之后:
由于fire_event不会查找按钮的物理表示,而是查找源中的JS事件,因此可以在按钮存在/可见/可操作之前使用它。
答案 1 :(得分:1)
您可以查看您在测试中使用的浏览器的缩放级别吗?
我遇到了与click方法相同的问题,但我可以通过将浏览器(IE9)的缩放级别设置回100%来“修复”它。
请注意,Internet Explorer的Selenium Webdriver要求声明这是Native Events的工作要求。见here