|
发表于 2023-5-13 01:04:33
|
显示全部楼层
要连接到一个已经打开的浏览器,需要使用Selenium中的attach_session()方法。该方法接受一个字典参数,其中包含与浏览器会话相关的信息。
首先,你需要启动一个新的Python交互式会话或以脚本方式启动Python,并导入Selenium库。然后,使用webdriver.ChromeOptions()对象创建一个选项实例,并在选项中设置启动Chrome时的一些参数,例如:
- from selenium import webdriver
- # 创建选项实例
- options = webdriver.ChromeOptions()
- # 设置选项
- options.add_argument("--remote-debugging-port=9222")
复制代码
然后,在该浏览器中加载要测试的网页,打开Chrome DevTools,并通过输入 chrome://version/ 并回车来获取浏览器版本信息中的DevTools实例URL。该URL通常位于 "ws://127.0.0.1:9222/devtools/browser/<HASH>" 的末尾。在这里,<HASH>是一个唯一的浏览器实例标识符。例如:
- WebSockets debugger proxying to <ws address>
- DevTools listening on ws://127.0.0.1:9222/devtools/browser/<HASH>
复制代码
在获取到DevTools实例URL之后,我们可以使用attach_session()方法将Selenium会话附加到现有的Chrome DevTools实例上,例如:
- # 获取会话ID和DevTools实例URL,并构建会话信息字典
- session_id = "<SESSION_ID>"
- executor_url = "http://127.0.0.1:9222/"
- selenium_session = {
- "browserName": "chrome",
- "goog:chromeOptions": {
- "debuggerAddress": executor_url,
- },
- "moz:webdriverClickElementViaJavascript": True,
- "sessionId": session_id
- }
- # 将Selenium会话附加到现有的Chrome DevTools实例
- driver = webdriver.Chrome(
- options=options,
- )
- driver.execute("attach_session", selenium_session)
复制代码
在这里,我们将DevTools实例URL和会话ID与其他必要信息一起放入一个字典中。最后,通过execute()方法执行attach_session命令,来将Selenium会话附加到现有的Chrome DevTools实例上。
请注意,即使成功连接到了开启的浏览器,在进行任何交互前,你需要确保对应的Webdriver服务已经启动并运行在同一个端口上。 |
|