浏览器自动化测试时无法打开浏览器,提示无法连接,浏览器版本过低 Selenium、DrissionPage、cdp4j、Puppeteer、Playwright 问题

引言

使用 Selenium、Selenium Grid、DrissionPage、cdp4j、Puppeteer、Playwright 等自动化测试浏览器的时候,在 Windows 11 可能会出现无法连接浏览器、或出现错误提示:Unable to connect to the chrome remote debugging server localhost 9222。通常表示客户端尝试连接 Chrome 浏览器的远程调试端口 (通常是 9222),但未能成功连接。这可能有几种原因:

  1. Chrome 未启动或未能:Chrome 浏览器可能没有启动,或者没有以启用远程调试模式启动。
  2. 端口未开放:Chrome 可能没有监听端口 9222 或者被防火墙阻止。
  3. 其他进程占用端口:端口 9222 可能被其他进程占用。
  4. 网络问题:网络配置或本地主机名解析问题。
  5. 其他:检查一下浏览器继续后台运行是否关闭,例如:Chrome 在 设置 - 系统 - 关闭 Google Chrome 后继续运行后台应用;Edge 是在 设置 - 系统和性能 - 在 Microsoft Edge 关闭后继续运行后台扩展和应用。关闭该设置之后,在任务管理器里面结束该任务。

该问题检查到天亮,重装了 Python、Pycharm、Chrome,降级了 Python、Chrome,我以为我解决了,没想到是天亮了……

公众号:人生只不过是一场投资

原理

本文不讲原理,只提供方案。
本文探讨的是端口占用的情况,正文开始。

使用 cmd 判断该端口是否被占用

netstat -ano | findstr "9222"
TCP    127.0.0.1:9222         0.0.0.0:0                     LISTENING       23928
TCP    127.0.0.1:62671        127.0.0.1:9222         TIME_WAIT       0
TCP    127.0.0.1:62695        127.0.0.1:9222         TIME_WAIT       0
TCP    127.0.0.1:62697        127.0.0.1:9222         TIME_WAIT       0

如该返回代码所示,端口号在进程 id 为 23928 的进程 LISTENING(监听或者使用)中,这时候,我们可以使用 win + x 放开之后按 T 打开任务管理器(如果这个步骤你不是任务管理器,请使用 Ctrl + Alt + Delete(或者小键盘的点 . )),接下来跟着我的步骤找对应的进程:(找到后是否结束任务?请根据自己实际情况来)
在这里插入图片描述
注意:手动查找的时候要注意逐层翻查,因为有可能是子进程的占用,而非主进程:
在这里插入图片描述

Python 解决方案

手动查找太麻烦了,人生苦短,我用 Python

import psutil

def get_process_using_port(port):
    for conn in psutil.net_connections(kind='inet'):
        if conn.laddr.port == port:
            process = psutil.Process(conn.pid)
            return process
    return None

def main(port=9222, name="chrome.exe"):
    process = get_process_using_port(port)
    if process:
        process_name = process.name().lower()
        print(f"Port {port} is being used by {process_name}")
        if process_name != name:
            print(f"Killing process {process_name} (PID: {process.pid})")
            process.kill()
    else:
        print(f"Port {port} is not in use.")

if __name__ == "__main__":
    main()

只要关闭了 “关闭后继续运行后台扩展和应用” 这个功能,使用 Python 判断对应的进程是否是要查找的进程名,不是就直接关闭。

  • 18
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Selenium是一个用于自动化Web应用程序测试的工具。它支持多种浏览器,包括Edge浏览器。使用Selenium进行自动化测试可以帮助开发人员和测试人员自动执行各种测试任务,如功能测试、回归测试等。Selenium提供了多种编程语言的支持,包括Python。通过编写Python脚本,可以使用Selenium来模拟用户在Edge浏览器中的操作,如点击、输入文本等。可以使用Selenium的定位方法来定位页面上的元素,如id、class、xpath等。此外,还可以使用Selenium的unittest框架来组织和管理测试用例。总之,Selenium是一个强大的自动化测试框架,可以与Edge浏览器一起使用来进行自动化测试。\[1\]\[2\] #### 引用[.reference_title] - *1* [selenium+Edge浏览器实现web端自动化测试](https://blog.csdn.net/qq_48728737/article/details/118014512)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Selenium自动化测试](https://blog.csdn.net/mz474920631/article/details/123848953)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ょ镜花う水月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值