【发布时间】:2011-05-25 15:32:09
【问题描述】:
代码
for i in 0..10
$browser.link(:id => "send_link").fire_event("onclick")
puts "Click #" + i.to_s
end
仅在因无法定位元素错误而崩溃之前向控制台显示“单击 #0”。我需要它点击链接 10 次,即使页面试图从第一次点击加载。有没有办法使用 watir-webdriver 来做到这一点,还是我必须使用 win32api 劫持鼠标并进行硬点击?
编辑:目前,我试图通过使用硬件单击方法来解决这个问题,该方法适用于我使用 watir 和 IE8 时遇到的另一个问题,但它似乎不适用于 watir-webdriver 和 Firefox 4 .
【问题讨论】:
-
点击链接时会发生什么?是否将浏览器带到另一个页面?
-
这是你真正问题的一个附带问题,但你意识到你在上面指定的循环中有一个“栅栏”错误?它将迭代 11 次,而不是 10 次。你想做“for i in 0..9”或“for i in 1..10”或类似 '10.times do |i|'而不是你当前的循环。
-
当我单击该链接时,将运行一个在服务器端进行处理的 ruby 函数。当浏览器等待处理完成时,屏幕上会出现一个微调器动画。
-
好的,所以它实际上并没有加载页面,而是在后台向服务器发出请求。并且很可能微调器只是一个动画图形文件,它的可见性会改变,直到客户端代码从服务器返回它需要的响应。除非微调器实际上不是模态的或在某种弹出窗口中是吗? (我试图找出你描述的行为的一个很好的理由)我开始认为从 DOM 的角度来看,页面可能已被更改,以至于它被禁用或不再存在
-
通常,“无法定位元素”错误会导致测试立即崩溃,但在这种情况下,它会发送点击,然后在崩溃之前等待下一页加载。
标签: internet-explorer firefox watir watir-webdriver