Ruby 在动画弹出窗口关闭后单击元素

Ruby 在动画弹出窗口关闭后单击元素,ruby,testing,automation,cucumber,watir,Ruby,Testing,Automation,Cucumber,Watir,我们的网站在整个网站上有多个javascript弹出窗口。当你点击打开一个弹出窗口时,屏幕会稍微变灰,一旦加载了实际的弹出窗口,就会显示一个动画图像。当弹出窗口关闭时,它会随着略带灰色的屏幕逐渐消失。我可以打开并使用wait_直到_出现来单击关闭按钮,但我的测试总是失败,因为下一个元素不可单击。这将适用于睡眠,但希望远离睡眠。我曾尝试使用其他等待方法来等待下一个元素,但无法找到最佳方法。下面是我试图做的一个例子 require 'watir-webdriver' browser = Watir

我们的网站在整个网站上有多个javascript弹出窗口。当你点击打开一个弹出窗口时,屏幕会稍微变灰,一旦加载了实际的弹出窗口,就会显示一个动画图像。当弹出窗口关闭时,它会随着略带灰色的屏幕逐渐消失。我可以打开并使用wait_直到_出现来单击关闭按钮,但我的测试总是失败,因为下一个元素不可单击。这将适用于睡眠,但希望远离睡眠。我曾尝试使用其他等待方法来等待下一个元素,但无法找到最佳方法。下面是我试图做的一个例子

require 'watir-webdriver'

browser = Watir::Browser.new :chrome
browser.goto('www.hayneedle.com')

browser.img(:src, 'http://images.hayneedle.com/shared/images/HN_Free_Shipping_Easy_Returns_Low.png').click

browser.a(:id, 'hn_modal_close').wait_until_present
browser.a(:id, 'hn_modal_close').click

#this is the element that is not clickable because the popup is still closing
browser.a(:href, 'http://www.hayneedle.com/bath/').click
这有用吗

browser.a(:href, 'http://www.hayneedle.com/bath/').when_present.click

有关等待的更多信息,请参见

等待可用内容的另一种方法是等待不可用的内容。在这种情况下,您似乎应该等待弹出窗口消失

当我运行你的代码时,我得到了一个异常:

Element is not clickable at point (449, 142). Other element would receive the click: <div id="hn_modal_bg"></div> (Selenium::WebDriver::Error::UnknownError)

遗憾的是,没有,它说其他元素将接收单击,它给出的元素是弹出窗口中的一个div类。即使我让弹出窗口打开,然后做一个puts.present?在其后面的元素上,它返回true。所以,任何等待方法都不起作用,因为watir webdriver认为它是可点击的。哦,伙计,谢谢!我试过了,但是用错了div,就在hn_modal_bg上面。再次感谢!他成功地运用了这项技术。我们需要在JQuery对话框消失后单击一个按钮,最初我尝试等待按钮可单击,但我一直收到异常。最后使用了这种方法,现在每次都可以使用。
browser.a(:id, 'hn_modal_close').wait_until_present
browser.a(:id, 'hn_modal_close').click

#Wait for the gray background to disappear
browser.div(:id, 'hn_modal_bg').wait_while_present

browser.a(:href, 'http://www.hayneedle.com/bath/').click