watir-webdriver - 单击Javascript按钮

时间:2012-02-09 17:27:15

标签: watir watir-webdriver

第一周使用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

但它们之间有什么区别?

2 个答案:

答案 0 :(得分:2)

就它们之间的差异而言:

  • .click =模拟对象上的鼠标左键。
  • .fire_event =即使通过鼠标点击正常访问也可能无法访问javascript。
  • when_present.click =等待对象 两者都可用并出现在可视区域(完整浏览器 窗口)在尝试点击之前。
当您的网站使用AJAX时,

when_present非常有用,并且与一个对象进行交互会导致最终出现另一个对象。使用.click可能会尝试在第二个对象可用之前单击它,脚本将失败。

您的网页可能包含一个AJAX表单,并且您尝试与之交互的按钮不会立即加载,但在短暂延迟之后:

  • 输入了一个文本字段
  • 点击了另一个按钮
  • 页面完成生成内容

由于fire_event不会查找按钮的物理表示,而是查找源中的JS事件,因此可以在按钮存在/可见/可操作之前使用它。

答案 1 :(得分:1)

您可以查看您在测试中使用的浏览器的缩放级别吗?

我遇到了与click方法相同的问题,但我可以通过将浏览器(IE9)的缩放级别设置回100%来“修复”它。

请注意,Internet Explorer的Selenium Webdriver要求声明这是Native Events的工作要求。见here