在 Selenium 中,ChromeDriver 本身并没有直接提供一个方法来打开新的标签页,但你可以使用以下方法间接地实现这一功能。基本思路是通过 JavaScript 来在浏览器中打开一个新的标签页,并切换到新标签页。
打开新标签页的步骤
- 使用
driver.execute_script()执行 JavaScript,打开一个新的标签页。 - 切换到新打开的标签页。
- 在新标签页上执行你需要的操作。
示例代码
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager
# 配置 ChromeOptions
options = Options()
options.add_argument("--headless") # 可选: 如果你希望在没有界面的情况下运行浏览器
# 启动浏览器
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
# 打开第一个页面
driver.get("https://www.youkuaiyun.com")
# 打开一个新的标签页
driver.execute_script("window.open('https://www.youkuaiyun.com', '_blank');")
# 获取所有标签页的句柄
handles = driver.window_handles
# 切换到新打开的标签页(第二个标签页)
driver.switch_to.window(handles[1])
# 在新的标签页上执行操作,例如打印当前页面的标题
print(driver.title)
# 关闭当前标签页
driver.close()
# 切换回第一个标签页
driver.switch_to.window(handles[0])
# 在第一个标签页上执行操作
print(driver.title)
# 最后关闭浏览器
driver.quit()
代码解释
-
打开第一个页面:
driver.get("https://www.youkuaiyun.com")打开第一个页面。
-
打开新标签页:
driver.execute_script("window.open('https://www.youkuaiyun.com', '_blank');")使用 JavaScript 打开一个新的标签页,并加载 Bing 页面。
-
获取所有标签页的句柄:
driver.window_handles获取当前所有打开标签页的句柄,返回的是一个列表。
-
切换到新标签页:
driver.switch_to.window(handles[1])切换到新标签页(handles[1]是新标签页的句柄)。
-
关闭当前标签页并切换回原标签页:
driver.close()关闭当前标签页。driver.switch_to.window(handles[0])切换回原来的标签页。
-
关闭浏览器:
driver.quit()关闭浏览器并结束会话。
注意事项
- 标签页句柄:
window_handles是一个包含所有标签页的句柄的列表,handles[0]是第一个标签页,handles[1]是第二个标签页,依此类推。 _blank:JavaScript 中的window.open()方法可以接受两个参数,第一个是 URL,第二个是打开方式(_blank表示在新标签页中打开)。
527

被折叠的 条评论
为什么被折叠?



