在 OS X 中使用 Selenium WebDriver 打开和关闭新选项卡
Posted
技术标签:
【中文标题】在 OS X 中使用 Selenium WebDriver 打开和关闭新选项卡【英文标题】:Open and close new tab with Selenium WebDriver in OS X 【发布时间】: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 上不起作用?! 【参考方案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 definedwindows = browser.window_handles
【参考方案5】:
没有什么比运行 javascript 更简单、更清晰的了。
打开新标签:
driver.execute_script("window.open('');")
【讨论】:
您好,非常感谢!但是您的命令会打开一个新窗口,而不是一个新选项卡。如果你告诉我如何用 JS 打开一个新标签,我会接受你的回答。以上是关于在 OS X 中使用 Selenium WebDriver 打开和关闭新选项卡的主要内容,如果未能解决你的问题,请参考以下文章