如何使用 Selenium Python 打开一个新的选项卡?

5

我正在努力制作一个程序,可以打开多个网站,但我无法按下 control-t。我尝试了多种解决方案,但都无法正常工作。当我使用 keydown 方法时,会显示一个错误信息:

webdriver has no attribute key_down

当我尝试使用 send_keys(Keys.CONTROL + 't') 时,它没有引发任何错误,也没有做任何事情。我该如何打开一个新标签页?

以下是我的尝试:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
import time

PATH = "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(PATH)

driver.get("https://youtube.com")
search = driver.find_element_by_id("search")
#search.keydown(Keys.CONTROL)

#Webelement.key_down(Keys.CONTROL).send_keys('t').key_up(Keys.CONTROL).perform()

search.send_keys(Keys.CONTROL+'t')
time.sleep(10)
4个回答

6
你可以这样做:
from selenium import webdriver

driver.get("https://www.youtube.com")
search = driver.find_element_by_id("search")

driver.execute_script("window.open('https://www.google.com')")

2

以下是您可以尝试的方法:

from selenium import webdriver

webBrowser = webdriver.<>()
  
# This is first tab
webBrowser.get('<>')

# Second tab
webBrowser.execute_script("window.open('about:blank','secondtab');")
webBrowser.switch_to.window("secondtab")
webBrowser.get('<>')

# Third tab
webBrowser.execute_script("window.open('about:blank','thirdtab');")
webBrowser.switch_to.window("thirdtab")
webBrowser.get('<>')

您可以从Python - 使用Selenium打开多个标签页中了解更多相关信息。
此外,我认为您还应该看看这里
但是,如果您想在多个窗口上运行某些内容,则建议使用多个webdriver实例。这样做更容易管理,并且得到支持(虽然有一些打开新标签页或窗口的解决方法,例如按下一个热键来打开新窗口,但它们并不得到支持)。

1

你可以使用 pyautogui 来通过 ctrl+t 打开新选项卡:

import pyautogui

pyautogui.keyDown('ctrl')
pyautogui.press('t')
pyautogui.keyUp('ctrl')

1
driver.switch_to.new_window()

您可以传递“tab”或“window”。对于ChromeDriver,默认情况下会打开一个选项卡。以下是来自webdriver文档的链接:From the webdriver docs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接