Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript (水豚)访问模式窗口_Javascript_Capybara_Modal Window - Fatal编程技术网

Javascript (水豚)访问模式窗口

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)

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

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

模式是从Twitter()使用引导创建的。。。它正在经历一系列的转变(但我不知道这是否与我要说的有关)

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

A) 使用
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
元素和它后面的透明覆盖层。真正的模式对话框是使用
窗口创建的。例如,确认
,确实可以使用示例代码查询该对话框。在您的情况下,您应该为modal
div
元素提供一个
id
,并将其用作从Capybara查询它的句柄,并等待其显示为“block”。但是没有测试任何东西。

我正在使用Selenium
Capybara.default\u driver=:selenium
Ok,您在帖子中没有提到这一点。因为我没有看到任何错误,所以我会确保您在测试套件中真正调用该弹出窗口(通过单击某些东西等,我不知道业务逻辑)。您也可以在“调用弹出窗口”操作之后放置一些sleep 10,仅用于测试目的。我确实在规范中放置了一些
sleep
操作,并且我已经以多种方式对其进行了测试。。。而且,正如你所说的,我也没有发现任何错误。。。但是,我仍然得到了指定的错误,这意味着该模式窗口的句柄不存在,因此该窗口不存在。对于Selenium,我得到了相同的结果-如果我放置一个断点,我可以看到该模式没有弹出-你能解决它吗?