(Capybara)访问模式窗口
(Capybara) access modal window
我正在编写请求规范。。。我用水豚。。。我遇到了一些模态窗口的问题。
在我的测试中,我真正想要的是填写一个弹出在模式窗口中的表格。
模态是通过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或其他驱动程序吗?
相关文章:
- Angular$scope在模式窗口内不起作用
- 更改不在引导模式窗口中工作的月份和年份
- TinyMCE全屏不允许出现模式窗口
- 自动模式窗口?/欢迎弹出框
- 推特Boostrap模式窗口-可拖动不工作
- Twitter Boostrap:模式窗口在重新播放模式窗口后不播放视频
- 在Bootstrap模式窗口中打开远程内容
- jQuery模式窗口在内容为“”时不居中;注入“;在飞行中
- 如何在模式窗口弹出窗口中隐藏滚动条
- fancybox将内容更改为模式窗口
- 将值传递给模式窗口中的 JavaScript 函数
- HTML 瞬态模式窗口
- 具有 UI 引导模式窗口的父$scope子
- 如何将参数传递到 UI 路由器状态的模式窗口
- 如何使用引导程序创建模式窗口
- j查询模式窗口,刷新父问题
- 无法将引导模式窗口作为路由打开
- 如何使模式窗口打开动态内容并更改url
- 在引导模式窗口内路由
- 更新面板和模式窗口