返回

2021 到 2024 年:连接本地远程 Selenium Chrome 会话的权威指南

python

使用 Selenium Chrome 网页驱动程序连接到本地远程会话:2021 年方法与 2024 年解决方案

摘要:

本文记录了在 2021 年创建和连接到本地 Windows PC 上的远程 Selenium Chrome 网页驱动程序会话的方法,以及该方法在 2024 年失效后的解决方案。它探讨了相关问题、提供了详细的步骤来解决问题,并提供了常见的常见问题解答。

2021 年方法:

在 2021 年,创建和连接到本地远程 Chrome 网页驱动程序会话需要以下步骤:

  • 创建会话: 使用 webdriver.Chrome 选项创建带有实验性选项的 Chrome 网页驱动程序会话,例如 detachexcludeSwitches
  • 获取会话信息: 获取会话执行程序 URL 和会话 ID。
  • 连接到会话: 使用 webdriver.Remote 通过提供会话执行程序 URL 和空 desired_capabilities 参数来连接到会话。

2024 年问题:

2024 年,上述方法不再适用于 Selenium 4 及更高版本。desired_capabilities 参数已弃用,由 options 参数代替。

解决方案:

要解决此问题,请将 webdriver.ChromeOptions() 实例传递给 webdriver.Remoteoptions 参数。

详细步骤:

  1. 创建会话:
    • 使用 webdriver.Chrome 选项创建带有实验性选项的 Chrome 网页驱动程序会话,例如 detachexcludeSwitches
  2. 获取会话信息:
    • 获取会话执行程序 URL 和会话 ID。
  3. 连接到会话:
    • 使用 webdriver.Remote 通过提供会话执行程序 URL 和 webdriver.ChromeOptions() 实例来连接到会话。

代码示例:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chromeOptions = Options()
chromeOptions.add_experimental_option("detach", True)
chromeOptions.add_experimental_option("excludeSwitches", ["enable-automation"])
chromeOptions.add_experimental_option("useAutomationExtension", False)

driver = webdriver.Chrome(options=chromeOptions)
browserSessionInfo = [["_url", driver.command_executor._url], ["session_id", driver.session_id]]

driver = webdriver.Remote(command_executor=browserSessionInfo["_url"], options=webdriver.ChromeOptions())
driver.close() # this prevents the dummy browser
driver.session_id = browserSessionInfo["session_id"]

常见问题解答:

  • 为什么需要使用 webdriver.Remote 来连接到会话?
    webdriver.Remote 允许您与远程 Web 浏览器进行交互,即使浏览器与脚本位于不同的计算机上。
  • 如何检查连接是否成功?
    连接成功后,您可以与会话交互并对其执行命令,例如查找元素或导航到 URL。
  • 为什么需要使用 webdriver.ChromeOptions() 实例?
    webdriver.ChromeOptions() 实例允许您配置浏览器会话的选项,例如禁用自动化扩展程序或排除特定命令行开关。
  • 是否有其他方法可以连接到远程会话?
    可以使用 Selenium Grid 或第三方服务,例如 Sauce Labs 或 BrowserStack,来连接到远程会话。
  • 此方法是否适用于其他浏览器?
    此方法也适用于其他浏览器,例如 Firefox 和 Edge,只要您使用相应的 Web 驱动程序类。

结论:

本文提供了在 2021 年和 2024 年创建和连接到本地远程 Selenium Chrome 网页驱动程序会话的方法。通过遵循本文中概述的步骤,您可以有效地与远程会话交互并执行自动化任务。