在OS X中使用Selenium WebDriver打开和关闭新选项卡

use*_*737 7 python macos selenium

我在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')
Run Code Online (Sandbox Code Playgroud)

如何在Mac上实现相同的目标?根据这个评论,我应该用browser.find_element_by_tag_name('body').send_keys(Keys.COMMAND + 't')一个新的标签,但我没有Mac来测试它,等同于Ctrl-w什么?

谢谢!

小智 13

没有什么比运行JavaScript更简单,更清晰了.

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

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

小智 8

打开一个新标签:

browser.get('http://www.google.com')
Run Code Online (Sandbox Code Playgroud)

关闭标签:

browser.close()
Run Code Online (Sandbox Code Playgroud)

切换到标签:

browser.swith_to_window(window_name)
Run Code Online (Sandbox Code Playgroud)


小智 8

您可以选择要关闭的窗口吗?

window_name = browser.window_handles[0]
Run Code Online (Sandbox Code Playgroud)

切换窗口?

browser.switch_to.window(window_name=window_name)
Run Code Online (Sandbox Code Playgroud)

然后关闭它?

browser.close()
Run Code Online (Sandbox Code Playgroud)


小智 6

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

Open new tab by:driver.execute_script("window.open('"+URL+"', '__blank__');") 其中 URL 是一个字符串,例如“http://www.google.com”。

关闭标签: driver.close()[注意,driver.quit()当您只打开 1 个标签时,这也会加倍]。

通过以下方式在选项卡之间导航:driver.switch_to_window(driver.window_handles[0])driver.switch_to_window(driver.window_handles[1])