【问题标题】:Open and close new tab with Selenium WebDriver in OS X在 OS X 中使用 Selenium WebDriver 打开和关闭新选项卡
【发布时间】:2014-11-15 02:44:05
【问题描述】:

我在 Windows 上使用 Python 2.7 中的 Firefox Webdriver 来模拟打开 (Ctrl+t) 和关闭 (Ctrl + w) 一个新标签。

这是我的代码:

from selenium import webdriver  
from selenium.webdriver.common.keys import Keys

browser = webdriver.Firefox()
browser.get('https://www.google.com')
main_window = browser.current_window_handle
# open new tab
browser.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 't')
browser.get('https://www.yahoo.com')

# close tab
browser.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 'w')

如何在 Mac 上实现相同的功能? 基于this comment 应该使用browser.find_element_by_tag_name('body').send_keys(Keys.COMMAND + 't') 打开一个新标签,但我没有Mac 来测试它,那么Ctrl-w 的等效项呢?

谢谢!

【问题讨论】:

  • 关闭选项卡是 Command + 'w'。您可以将命令键视为控制键替换。我猜你得从你的朋友那里借一个来测试你的代码……
  • 它在 chrome 上不起作用?!

标签: python macos selenium


【解决方案1】:

只是为仍然好奇的人结合上面的答案。以下基于 Python 2.7 和 Chrome 中的驱动程序。

打开新标签:driver.execute_script("window.open('"+URL+"', '__blank__');") 其中 URL 是一个字符串,例如“http://www.google.com”。

通过以下方式关闭标签: driver.close() [注意,当您只打开 1 个选项卡时,这也兼作 driver.quit()]。

在标签之间导航:driver.switch_to_window(driver.window_handles[0])driver.switch_to_window(driver.window_handles[1])

【讨论】:

    【解决方案2】:

    您可以选择要关闭的窗口:

    window_name = browser.window_handles[0]
    

    切换窗口:

    browser.switch_to.window(window_name=window_name)
    

    然后关闭它:

    browser.close()
    

    【讨论】:

      【解决方案3】:

      打开一个新标签:

      browser.get('http://www.google.com')
      

      关闭标签:

      browser.close()
      

      切换到标签页:

      browser.swith_to_window(window_name)
      

      【讨论】:

      • +1 for browser.close();我以为这是在浏览器对象上进行垃圾收集,但没有意识到这是一种关闭标签的方法
      • @StevenByrne 其实不管是driver.close() 还是driver.quit() 循环运行后如果不手动退出进程(例如python中的sys.exit(0))都会导致内存泄漏。跨度>
      • 对不起,我的错。 driver.quit() 将防止内存泄漏。当您只有 1 个选项卡时,driver.close() 等于 driver.quit()
      【解决方案4】:

      打开新标签:

      browser.execute_script("window.open('"+your url+"', '_blank')")
      

      切换到新标签:

      browser.switch_to.window(windows[1])
      

      【讨论】:

      • NameError: name 'windows' is not defined
      • windows = browser.window_handles
      【解决方案5】:

      没有什么比运行 JavaScript 更简单、更清晰的了。

      打开新标签: driver.execute_script("window.open('');")

      【讨论】:

      • 您好,非常感谢!但是您的命令会打开一个新窗口,而不是一个新选项卡。如果你告诉我如何用 JS 打开一个新标签,我会接受你的回答。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-10
      • 1970-01-01
      • 2016-04-22
      • 2013-07-07
      相关资源
      最近更新 更多