Javascript (水豚)访问模式窗口
我正在写请求规范。。。我用水豚。。。我遇到了一些模态窗口的问题 我在测试中真正想要的是填写一个在模式窗口中弹出的表单 模式是从Twitter()使用引导创建的。。。它正在经历一系列的转变(但我不知道这是否与我要说的有关) 我在网上找到了一些变通方法,比如: A) 使用Javascript (水豚)访问模式窗口,javascript,capybara,modal-window,Javascript,Capybara,Modal Window,我正在写请求规范。。。我用水豚。。。我遇到了一些模态窗口的问题 我在测试中真正想要的是填写一个在模式窗口中弹出的表单 模式是从Twitter()使用引导创建的。。。它正在经历一系列的转变(但我不知道这是否与我要说的有关) 我在网上找到了一些变通方法,比如: A) 使用page.driver.browser.window\u句柄在页面之间切换 page.driver.browser.switch_to.window(page.driver.browser.window_handles.last)
page.driver.browser.window\u句柄在页面之间切换
page.driver.browser.switch_to.window(page.driver.browser.window_handles.last)
B) 使用等待_,直到
以确保模式负载
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 ==)
据我所知,实际上我的模态窗口并不存在
在这方面的任何帮助都将不胜感激
谢谢。水豚默认使用:rack\u测试驱动程序。您能确认您正在使用Selenium WebDriver或其他可以打开modalbox的驱动程序吗?我没有使用Capybara,但您的问题与以下事实有关:Bootstrap的模式对话框实际上是一个伪模式,因为它实际上只是一个div
元素和它后面的透明覆盖层。真正的模式对话框是使用窗口创建的。例如,确认,确实可以使用示例代码查询该对话框。在您的情况下,您应该为modaldiv
元素提供一个id
,并将其用作从Capybara查询它的句柄,并等待其显示为“block”。但是没有测试任何东西。我正在使用SeleniumCapybara.default\u driver=:selenium
Ok,您在帖子中没有提到这一点。因为我没有看到任何错误,所以我会确保您在测试套件中真正调用该弹出窗口(通过单击某些东西等,我不知道业务逻辑)。您也可以在“调用弹出窗口”操作之后放置一些sleep 10,仅用于测试目的。我确实在规范中放置了一些sleep
操作,并且我已经以多种方式对其进行了测试。。。而且,正如你所说的,我也没有发现任何错误。。。但是,我仍然得到了指定的错误,这意味着该模式窗口的句柄不存在,因此该窗口不存在。对于Selenium,我得到了相同的结果-如果我放置一个断点,我可以看到该模式没有弹出-你能解决它吗?