(Capybara)访问模式窗口

(Capybara) access modal window

本文关键字:模式 窗口 访问 Capybara      更新时间:2023-09-26

我正在编写请求规范。。。我用水豚。。。我遇到了一些模态窗口的问题。

在我的测试中,我真正想要的是填写一个弹出在模式窗口中的表格。

模态是通过Twitter上的Bootstrap创建的(http://twitter.github.com/bootstrap/javascript.html#modals)。。。它正在经历一系列的转变(但我不知道这是否与我要说的内容有关)。

我尝试了一些我在网上找到的变通方法,比如:

A) 使用page.driver.browser.window_handles 在页面之间切换

page.driver.browser.switch_to.window(page.driver.browser.window_handles.last)

B) 使用wait_until确保模态加载

def modal_wrapper_id
  '#modal-edit'
end
def modal_visible
  wait_until { find(modal_wrapper_id).visible? }
rescue Capybara::TimeoutError
  flunk 'Expected modal to be visible.'
end

但这些都不起作用。。。所以我想在模式窗口处于活动状态时渲染窗口句柄的数量。。。

所以我做了这个:

puts page.driver.browser.window_handles.length.should == 2 

我得到了这个:

Failure/Error: page.driver.browser.window_handles.length.should == 2
           expected: 2
           got: 1 (using ==)

据我所知,实际上我的模态窗口并不存在。

如果能在这方面提供任何帮助,我们将不胜感激。

谢谢。

我没有使用Capybara,但你的问题与Bootstrap的模态对话框实际上是一个伪模态有关,因为它实际上只是一个div元素和它后面的透明覆盖。例如,真正的模态对话框是使用window.confirm创建的,它确实可以使用示例代码查询。在您的情况下,您应该给模式div元素一个id,并将其用作从Capybara查询它的句柄,然后等待它的显示为"块"。不过没有测试任何东西。

Capybara默认使用:rack_test驱动程序。你能确认你使用的是Selenium WebDriver或其他驱动程序吗?