【问题标题】:Using watir-webdriver, how can I fire an event without waiting for the page to load?使用 watir-webdriver,如何在不等待页面加载的情况下触发事件?
【发布时间】: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 .

http://wiki.openqa.org/display/WTR/Right+Click+an+Element

【问题讨论】:

  • 点击链接时会发生什么?是否将浏览器带到另一个页面?
  • 这是你真正问题的一个附带问题,但你意识到你在上面指定的循环中有一个“栅栏”错误?它将迭代 11 次,而不是 10 次。你想做“for i in 0..9”或“for i in 1..10”或类似 '10.times do |i|'而不是你当前的循环。
  • 当我单击该链接时,将运行一个在服务器端进行处理的 ruby​​ 函数。当浏览器等待处理完成时,屏幕上会出现一个微调器动画。
  • 好的,所以它实际上并没有加载页面,而是在后台向服务器发出请求。并且很可能微调器只是一个动画图形文件,它的可见性会改变,直到客户端代码从服务器返回它需要的响应。除非微调器实际上不是模态的或在某种弹出窗口中是吗? (我试图找出你描述的行为的一个很好的理由)我开始认为从 DOM 的角度来看,页面可能已被更改,以至于它被禁用或不再存在
  • 通常,“无法定位元素”错误会导致测试立即崩溃,但在这种情况下,它会发送点击,然后在崩溃之前等待下一页加载。

标签: internet-explorer firefox watir watir-webdriver


【解决方案1】:

您是否尝试过使用 .click_no_wait 来查看它是否适合您?

10.times do |i|  
  $browser.link(:id => "send_link").click_no_wait
  puts "Click #" + i.to_s
end

【讨论】:

  • 我记得之前尝试在 watir-webdriver 中使用 click_no_wait ,但我记得那不起作用,所以我没想到在这种情况下再试一次。我回家后试试看。
  • 我尝试使用 click_no_wait 并得到一个未定义的方法错误。 watir-webdriver 似乎根本没有这个功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-07
  • 2019-07-31
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 2023-03-04
  • 2013-09-09
相关资源
最近更新 更多