无法访问Capybara的新窗口

时间:2015-05-20 09:09:33

标签: ruby selenium-webdriver cucumber capybara

我在使用Capybara时一直试图访问一个新窗口(井标签),但一直在

Selenium::WebDriver::Error::NoSuchWindowError: no such window

到目前为止,我的流程和理解是

@session_1 = Capybara::Session.new(:chrome)
@session_1.visit("www.google.com")

所以在这个阶段我打开谷歌。现在假设我想在新的标签/窗口中打开谷歌

@session_1.open_new_window

这将打开一个新窗口,并访问我可以执行的那些窗口

@session_1.windows

返回一个windows数组

[#<Window @handle="CDwindow-09B6E81E-7874-4686-86A9-8BFB917E0F4F">,
#<Window @handle="CDwindow-5DA14173-8D63-422A-BF98-39B7C2A5D2DB">]

因此,作为测试,我想检查最新的Windows网址是否匹配about:blank

@new_tab = @session_1.windows.last
# @new_tab = #<Window @handle="CDwindow-5DA14173-8D63-422A-BF98-39B7C2A5D2DB">

page.within_window @new_tab do 
  expect(current_url).to eq('about:blank')
end

我在这里得到错误。

我想知道的是

1)如何选择新标签

2)如何在新标签页中打开新网址

2 个答案:

答案 0 :(得分:2)

所以我找到了答案,事实证明它比我尝试的要简单得多,信用转到Keiran Betteleythis帖子

@session_1.open_new_window
@session_1.switch_to_window(@session_1.windows.last)
@session_1.visit("url")

答案 1 :(得分:1)

Capybara有许多处理窗口的方法,open_new_window返回它打开的窗口,因此无需查看所有窗口的列表

Monoid