在Capybara / Poltergeist中打开一个新标签

时间:2015-02-09 17:46:06

标签: ruby-on-rails capybara phantomjs poltergeist

我正在尝试使用capybara / poltergeist点击它来打开一个链接,它会在新标签中打开。

我似乎无法让它发挥作用。

@session.find(<link>).click

似乎与

一样保持在同一页面上
click_link "<link>"

@session.driver.window_handles 

无论我在做什么,似乎只给了我一个窗口。

如何在新标签页中打开该链接?

对于la(With Capybara, how do I switch to the new window for links with "_blank" targets?)有效或无效,似乎有相当多的混淆。

希望有人能解决这个问题......似乎无法理解它。

确定。通过更新到最新版本的poltergeist(1.6.0),我们取得了一些进展。

现在我有两个窗口,但不知道如何在它们之间切换。

@session.windows

给了我

[Window @ handle =“0”,Window @ handle =“1”] (略微修改,因为它有点有趣)。

但是

@session.switch_to_window(1)

结果

NoMethodError: undefined method `handle' for "1":String

3 个答案:

答案 0 :(得分:6)

是的,截至2014年2月5日和poltergeist v1.6,你可以做到这一点,因为......

@session.click_on "link_with_target _blank"

@session.switch_to_window(@session.windows.last)
#Do whatever you're doing
@session.current_window.close
@session.switch_to_window(@session.windows.first)

希望为某人清除事情......

答案 1 :(得分:2)

我用

做了这个
page.switch_to_window(page.windows[0])

也许这对某人有用。

答案 2 :(得分:0)

这是使用Capybara 3.33对我有用的东西:

new_window = window_opened_by do
  click_link 'Go to external page'
end

within_window new_window do
  assert_current_path 'http://external-page.com/?q=lala'
end