在 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 defined windows = browser.window_handles【参考方案5】:

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

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

【讨论】:

您好,非常感谢!但是您的命令会打开一个新窗口,而不是一个新选项卡。如果你告诉我如何用 JS 打开一个新标签,我会接受你的回答。

以上是关于在 OS X 中使用 Selenium WebDriver 打开和关闭新选项卡的主要内容,如果未能解决你的问题,请参考以下文章

selenium模块

Python教程:selenium模块用法教程

selenium 中xpath定位的几种方式

python selenium都在一个会话浏览器中进行测试

selenium使用自动下载driver版本----webdriver-manager

selenium使用自动下载driver版本----webdriver-manager