【问题标题】:open a browser tab using Ruby selenium使用 Ruby selenium 打开浏览器选项卡
【发布时间】:2014-11-15 13:33:44
【问题描述】:

有人可以帮我解决以下代码的问题吗?我的目的是能够在浏览器中打开一个新标签。脚本通过,但并没有真正打开新标签

require 'selenium-webdriver'

@browser = Selenium::WebDriver.for :chrome
@browser.navigate.to "http://www.google.com"
body = @browser.find_element(:tag_name => 'body')
body.send_keys(:control, 't')

p "total number of windows"
p @browser.window_handles.length
p "printing window ids"
@browser.window_handles.each do  |window|
  p  window
end
@browser.quit

【问题讨论】:

  • 您是否发现任何有用的答案?
  • 实际上以下答案都没有打开新标签。抱歉回复延迟。
  • 因此,在阅读了更多关于打开新标签与新窗口(跨所有浏览器)的信息后,似乎它更像是用户偏好设置。因此,如果我想打开一个新选项卡,我应该创建一个没有指定宽度、高度属性的 。如果指定了这些属性,单击该链接将打开一个新窗口 - stackoverflow.com/questions/726761/…。仅仅打开一个新标签似乎需要做太多的工作,并且对于如何通过脚本打开新标签与窗口没有统一的协议

标签: ruby selenium-webdriver


【解决方案1】:

使用 Chrome 打开和管理新标签最接近的方法是:

require 'selenium-webdriver'

driver = Selenium::WebDriver.for :chrome
driver.get 'http://www.google.com'

#Extract the link we want to go to
address = driver.find_element(:link_text, "Gmail").attribute('href')

#Open a new browser window
driver.execute_script( "window.open()" )

#Use the newest window
driver.switch_to.window( driver.window_handles.last )
driver.get 'http://yahoo.com'

【讨论】:

  • 谢谢。这有帮助,但是我也可以创建一个新的 webdriver 实例并使用它。我真的很想做 ctrl+t 的确切操作,它通过代码在 chrome 浏览器中打开一个新选项卡。还有什么想法吗?
  • 这是一个 Selenium 问题,不支持打开新标签页,见stackoverflow.com/questions/14550360/…
【解决方案2】:

如果您使用的是 Mac,请尝试:

body.send_keys(:command, 't')

而不是

body.send_keys(:control, 't')

也看这里:How to open a new tab using Selenium WebDriver with Java?

【讨论】:

  • 我已经查看了您分享的这个链接,那时我发布了这个问题,因为在打开新标签时看不到这种行为。顺便说一句,我在 Windows 上。还有什么想法吗?
猜你喜欢
  • 2018-02-01
  • 1970-01-01
  • 2017-03-19
  • 2017-05-26
  • 2015-06-11
  • 2018-08-29
  • 1970-01-01
  • 2022-12-09
  • 1970-01-01
相关资源
最近更新 更多