【问题标题】:Switch between different tabs using capybara or selenium使用 capybara 或 selenium 在不同的选项卡之间切换
【发布时间】:2023-03-29 19:23:01
【问题描述】:

我希望在浏览器选项卡之间切换我正在测试的功能。但是,我无法做到这一点。已尝试使用以下内容:

page.driver.browser.switch_to.window(page.driver.browser.window_handles.first)

我的想法是,当我在第二个选项卡上时,上面的代码应该将它带回第一个选项卡。但是这不起作用。

我也只是尝试使用以下方法关闭第二个标签:

page.execute_script "window.close();"

但这确实有任何作用,选项卡没有关闭,整个浏览器窗口也没有关闭,因此看起来它什么也没做。

有没有其他人遇到过类似的问题,您是如何找到解决方案的?我正在使用 FireFox。

【问题讨论】:

  • 您的方法/代码通常是正确的(至少它在本地对我有用)。有两件事可能会导致您出现问题:(1)当打开一个新选项卡时,Selenium-Webdriver 不会自动切换到它 - 即我猜您的代码正在从原始选项卡切换到相同的原始选项卡和(2 ) 它看起来不像你可以window.close(); 原始标签 - 即只有在你切换到第二个标签时它才会做一些事情。

标签: selenium rspec capybara


【解决方案1】:

这是我关闭新标签的方法。

def close_new_tabs
  window = page.driver.browser.window_handles
    
  if window.size > 1 
    page.driver.browser.switch_to.window(window.last)
    page.driver.browser.close
    page.driver.browser.switch_to.window(window.first)
  end
end

每当需要关闭新标签时,我都会调用此方法。

【讨论】:

  • 关于标签的话题你如何创建一个新标签?
  • @Richlewis 点击 target="blank" 的链接。
【解决方案2】:

我可以使用以下方法在标签之间切换

browser.switch_to.window browser.window_handles.last

【讨论】:

    猜你喜欢
    • 2017-03-21
    • 2016-04-22
    • 2015-02-23
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 2023-03-13
    • 1970-01-01
    相关资源
    最近更新 更多