返回
2021 到 2024 年:连接本地远程 Selenium Chrome 会话的权威指南
python
2024-03-01 18:44:20
使用 Selenium Chrome 网页驱动程序连接到本地远程会话:2021 年方法与 2024 年解决方案
摘要:
本文记录了在 2021 年创建和连接到本地 Windows PC 上的远程 Selenium Chrome 网页驱动程序会话的方法,以及该方法在 2024 年失效后的解决方案。它探讨了相关问题、提供了详细的步骤来解决问题,并提供了常见的常见问题解答。
2021 年方法:
在 2021 年,创建和连接到本地远程 Chrome 网页驱动程序会话需要以下步骤:
- 创建会话: 使用
webdriver.Chrome
选项创建带有实验性选项的 Chrome 网页驱动程序会话,例如detach
和excludeSwitches
。 - 获取会话信息: 获取会话执行程序 URL 和会话 ID。
- 连接到会话: 使用
webdriver.Remote
通过提供会话执行程序 URL 和空desired_capabilities
参数来连接到会话。
2024 年问题:
2024 年,上述方法不再适用于 Selenium 4 及更高版本。desired_capabilities
参数已弃用,由 options
参数代替。
解决方案:
要解决此问题,请将 webdriver.ChromeOptions()
实例传递给 webdriver.Remote
的 options
参数。
详细步骤:
- 创建会话:
- 使用
webdriver.Chrome
选项创建带有实验性选项的 Chrome 网页驱动程序会话,例如detach
和excludeSwitches
。
- 使用
- 获取会话信息:
- 获取会话执行程序 URL 和会话 ID。
- 连接到会话:
- 使用
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 网页驱动程序会话的方法。通过遵循本文中概述的步骤,您可以有效地与远程会话交互并执行自动化任务。