首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Capybara,我如何切换到带有"_blank“目标的链接的新窗口?

使用Capybara,我如何切换到带有"_blank“目标的链接的新窗口?
EN

Stack Overflow用户
提问于 2011-09-30 22:42:53
回答 12查看 40.8K关注 0票数 81

也许这不是我实际遇到的问题,但似乎当我使用target="_blank“"click_link”链接时,会话将焦点保持在当前窗口上。

因此,我希望能够切换到新窗口,或者忽略_blank属性-本质上,我只希望它实际转到链接所指示的页面,这样我就可以确保它是正确的页面。

我使用webkit和selenium驱动程序。

到目前为止,我在下面提交了我的发现。一个更彻底的答案是非常感谢的。

此外,这只适用于selenium - webkit驱动程序的等价物(或者指出我可以在哪里发现它)将非常受欢迎。

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2014-08-02 17:17:15

Capybara 2.3包括新的窗口管理>=。它的用法如下:

new_window = window_opened_by { click_link 'Something' }
within_window new_window do
  # code
end
票数 92
EN

Stack Overflow用户

发布于 2011-10-03 23:30:25

此解决方案仅适用于Selenium驱动程序

所有打开的窗口都存储在Selenium的

response.driver.browser.window_handles

看起来像是一个数组。最后一项始终是最近打开的窗口,这意味着您可以执行以下操作来切换到它。

在一个块中:

new_window=page.driver.browser.window_handles.last 
page.within_window new_window do
  #code
end

只需将焦点重新设置为当前会话:

session.driver.browser.switch_to.window(page.driver.browser.window_handles.last)

在水豚问题页面上引用:https://github.com/jnicklas/capybara/issues/173

有关Selenium的窗口切换功能的更多详细信息:http://qastuffs.blogspot.com/2010/10/testing-pop-up-windows-using-selenium.html

票数 54
EN

Stack Overflow用户

发布于 2015-11-24 19:33:56

Capybara提供了一些方法来简化查找和切换窗口:

facebook_window = window_opened_by do
  click_button 'Like'
end
within_window facebook_window do
  find('#login_email').set('a@example.com')
  find('#login_password').set('qwerty')
  click_button 'Submit'
end

更多详细信息请访问:Capybara documentation

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7612038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档