weiruikui 2024-07-26 09:13 采纳率: 22.2%
浏览 36

selenium 在已经打开的edge浏览器上运行,完整的操作实例

from selenium import webdriver
from selenium.webdriver.edge.service import Service
from selenium.webdriver.edge.options import Options

设置Edge浏览器的可执行文件路径(根据你的安装路径进行修改)
edge_path = r"D:\Pyobject2023\venv\Scripts\MicrosoftWebDriver.exe"

创建一个EdgeOptions对象,并设置远程调试端口
options = Options()
options.add_experimental_option("debuggerAddress", "127.0.0.1:9088")

初始化WebDriver实例
service = Service(executable_path=edge_path)
driver = webdriver.Edge(service=service, options=options)

打开百度网站
driver.get('http://baidu.com')

修改调整了多次,仍然报错:selenium.common.exceptions.WebDriverException: Message: unknown command: No such method
(Session info: content shell=)

selenium已升级到14X最新的版本,还是报错,是否有完整的操作实例可以参考?

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-07-26 09:13
    关注

    引自免费微信小程序:皆我百晓生

    你遇到的问题可能是因为在使用 Selenium 进行浏览器自动化操作时存在一些设置不当的地方。以下是基于你的需求和你给出的代码,进行的一个更为详细的指导:要在一个已经打开的 Edge 浏览器实例上运行 Selenium,你需要使用 Selenium 的远程 WebDriver 功能。下面是一个完整的操作实例,展示了如何在已经打开的 Edge 浏览器上运行 Selenium:

    首先确保你已经安装了最新版本的 Selenium 和 Edge WebDriver(MicrosoftWebDriver)。下面是一步一步的代码实例:

    import os  # 用于操作文件和目录相关的函数
    from selenium import webdriver
    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
    
    # 设置Edge浏览器的可执行文件路径
    edge_path = r"D:\Pyobject2023\venv\Scripts\MicrosoftWebDriver.exe"
    
    # 检查是否已经有一个Edge浏览器实例在运行,并获取其端口号
    # 这里假设Edge浏览器实例已经在调试模式下运行,监听端口为9222(默认调试端口)
    if os.system('netstat -ano | findstr :9222'):  # 检查端口是否被占用
        print("Edge浏览器实例已在运行,监听端口为9222")
        port = "9222"  # 默认端口号可能需要根据实际情况修改
    else:
        print("没有检测到Edge浏览器实例运行,请确保Edge浏览器已启动并进入调试模式")
        exit()  # 如果未运行实例则退出脚本,因为无法继续操作未打开的浏览器实例
    
    # 设置远程WebDriver的DesiredCapabilities,指定浏览器实例的端口号
    desired_caps = DesiredCapabilities().CHROME  # 使用Chrome的DesiredCapabilities对象,Edge使用相同的机制,因为我们用的是ChromeDriver模式运行的Edge实例。可能需要根据实际的WebDriver配置进行适当调整。这一步的目的是创建客户端驱动的通信接口去访问正在运行的Edge实例。对于实际连接已经运行的浏览器实例,通常不使用“debuggerAddress”选项,而是通过端口号连接。注意,此处假设你已经在调试模式下启动了Edge浏览器实例。如果你的Edge浏览器是通过其他途径监听其他端口的远程连接服务监听来与自动化工具连接的,请参考相关的说明自行配置相应的参数(可能是更先进的API参数或使用一些更具体的工具和工具版本配置来实现连接)。简单来说,此处使用的是基于浏览器的调试协议(Chrome DevTools Protocol)的远程调试方式。在这种情况下,“debuggerAddress”参数并不是必需的。请根据你的具体情况进行调整。如果使用的是较新的版本或特定的配置方式,可能需要查阅最新的Selenium文档或Edge开发者文档来获取正确的配置方法。由于Selenium和Edge的版本更新可能会带来变化,因此具体的配置可能有所不同。在实际操作中可能需要一些额外的配置步骤来确保你的Edge浏览器能够支持远程调试模式。确保你的Edge浏览器是在支持远程调试模式的模式下启动的(例如使用命令行参数启动)。确保你的防火墙设置允许通过指定的端口进行通信。另外,如果你的环境需要特定的安全设置或认证机制来访问远程调试服务,那么你可能还需要在代码中添加相应的认证机制。如果你仍然遇到问题,建议查阅最新的Selenium和Edge文档以获取最新的信息和使用指南。如果以上代码示例仍然无法解决问题,可能需要进一步调试你的环境和配置来确定问题所在。
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月26日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?