Python+selenium—打开本地Edge浏览器—无需下载驱动器(模板—自己的笔记)

专栏导读

  • 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手

  • 🏳️‍🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注

  • 👍 该系列文章专栏:请点击——>Python办公自动化专栏求订阅

  • 🕷 此外还有爬虫专栏:请点击——>Python爬虫基础专栏求订阅

  • 📕 此外还有python基础专栏:请点击——>Python基础学习专栏求订阅

  • 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏

  • ❤️ 欢迎各位佬关注! ❤️

1、库的介绍

Selenium 是一个强大的工具,用于自动化Web应用程序的测试。它支持多种编程语言(如Python、Java、C#等)来编写测试脚本,并且可以与各种浏览器(如Chrome、Firefox、Edge等)进行交互。Selenium 主要由以下几个部分组成:
  • ①:Selenium WebDriver:
    这是 Selenium 最新的核心组件,提供了一个简洁、直观的接口来控制浏览器。WebDriver 可以模拟真实用户的操作,比如点击按钮、填写表单、导航到页面等。它直接与浏览器进行通信,因此能够提供更接近真实用户行为的测试环境。
  • ②:Selenium Grid
    Selenium Grid 允许将测试分布在多台机器上运行,从而加快测试执行的速度。通过 Grid,你可以同时在不同的操作系统和浏览器配置中并行地运行测试用例,这对于需要跨平台测试的应用非常有用。
  • ③:Selenium IDE:
    Selenium IDE 是一个用于录制和回放测试用例的工具,最初作为 Firefox 浏览器的一个插件发布,后来也推出了适用于 Chrome 的版本。它非常适合初学者使用,因为不需要编写代码即可创建测试用例。
  • ④:Selenium RC (Remote Control):
    这是 Selenium 的早期版本,现在已经被 Selenium WebDriver 所取代。RC 通过一个服务器端的 Java 应用来接收来自客户端脚本的命令,并将其转发给浏览器。尽管 RC 已经不再推荐使用,但仍然可以在某些特定场景下找到它的身影。
使用场景
  • ①:自动化测试:
    Selenium 最常见的用途就是自动化Web应用的测试过程。开发者或测试工程师可以利用 Selenium 编写自动化测试脚本来验证网站的功能是否按预期工作。
  • ②:数据抓取:
    虽然 Selenium 不是专门的数据抓取工具,但由于它可以完全控制浏览器的行为,因此也被广泛应用于需要登录、JavaScript 渲染等复杂交互的数据抓取任务中。
  • ③:界面测试:
    Selenium 能够帮助确保网页在不同浏览器上的显示效果一致,以及检查布局、颜色等视觉元素是否符合设计要求。

2、库的安装

用途安装
selenium控制浏览器pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/
os获取绝对路径内置库无需安装

3、核心代码

  • ①:启动 Edge并开启远程调试端口(例如9222)

略,在下面
  • ②:控制浏览器

略,请参考以往文章
文章链接
Python爬虫实战(实战篇)—19—selenium获取柯南所有剧集写入Excel—附完整版代码)点我进入本文
python+selenium判断【加载中】元素在就一直等待不在就点击下载(非常好用)点我进入本文
Python+selenium+PIL实现网页自动截图点我进入本文
Python控制selenium之谷歌驱动器移动至隐藏元素上点我进入本文
python-selenium控制浏览器多开窗口点我进入本文
python+selenium模拟键盘使用ESC退出某个页面中的小页面点我进入本文
在这里插入图片描述

4、完整1:自动打开本地Edge浏览器

  • 启动Chrome并开启远程调试

  • 启动 Chrome 并开启远程调试端口(例如9222),如你已经配置好的:

# -*- coding: UTF-8 -*-
'''
@Project :60-excelizi 
@File    :打开edge浏览器.py
@IDE     :PyCharm 
@Author  :一晌小贪欢(278865463@qq.com)
@Date    :2025/2/24 22:47 
'''

import subprocess

from pathlib import Path

import psutil

def find_edge():
    # 尝试在常见的安装位置找到Edge
    common_paths = [
        r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe",
        r"C:\Program Files\Microsoft\Edge\Application\msedge.exe"
    ]

    for path in common_paths:
        if Path(path).is_file():
            return path
    return None


def is_edge_running_on_port(port):
    # 使用 netstat 命令检查端口是否被占用
    result = subprocess.run(['netstat', '-ano'], capture_output=True, text=True)
    lines = result.stdout.splitlines()

    for line in lines:
        if f':{port}' in line:
            pid = line.split()[-1]
            try:
                process = psutil.Process(int(pid))
                if 'msedge.exe' in process.name().lower():
                    return True
            except psutil.NoSuchProcess:
                continue
    return False


def launch_edge_with_params(edge_path):
    if edge_path is None:
        print("Edge not found")
        return

    # 定义启动参数
    user_data_dir = r"D:\selenium"
    remote_debugging_port = 9222

    # 如果Edge已经在使用指定端口运行,则不再启动新的实例
    if is_edge_running_on_port(remote_debugging_port):
        print(f"Edge is already running on port {remote_debugging_port}.")
        return

    # 构建命令
    edge_command = f'"{edge_path}" --remote-debugging-port={remote_debugging_port} --user-data-dir="{user_data_dir}"'

    # 启动Edge
    subprocess.Popen(edge_command, shell=True)


if __name__ == "__main__":
    edge_path = find_edge()
    launch_edge_with_params(edge_path)

5、使用Selenium连接到远程调试端口

  • webdriver.Chrome() 配置为使用已开启调试端口的Edge实例

# -*- coding: UTF-8 -*-
'''
@Project :60-excelizi 
@File    :edge绑定端口.py
@IDE     :PyCharm 
@Author  :一晌小贪欢(278865463@qq.com)
@Date    :2025/2/24 22:50 
'''

from selenium.webdriver.edge.options import Options
from selenium.webdriver.common.by import By
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.edge.service import Service
from webdriver_manager.microsoft import EdgeChromiumDriverManager
import time
#
# 配置远程调试端口
edge_options = Options()
edge_options.add_experimental_option('debuggerAddress', '127.0.0.1:9222')  # 连接到上面开启的端口
driver = webdriver.Edge(options=edge_options)

# 访问网址
driver.get('http://www.baidu.com')
input_ = driver.find_element(By.ID,"kw")
input_.send_keys("python")

button = driver.find_element(By.ID,"su")
button.click()

6、小结

  • 这样的好处就是打开的浏览器是绑定端口号的,然后我们下方的调试代码也是连接到上面开启的端口的Edge浏览器,然后就可以进行调试浏览器或者进行爬虫!



总结

  • 希望对初学者有帮助

  • 致力于办公自动化的小小程序员一枚

  • 希望能得到大家的【一个免费关注】!感谢

  • 求个 🤞 关注 🤞

  • 此外还有办公自动化专栏,欢迎大家订阅:Python办公自动化专栏

  • 求个 ❤️ 喜欢 ❤️

  • 此外还有爬虫专栏,欢迎大家订阅:Python爬虫基础专栏

  • 求个 👍 收藏 👍

  • 此外还有Python基础专栏,欢迎大家订阅:Python基础学习专栏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小庄-Python办公

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

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

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

打赏作者

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

抵扣说明:

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

余额充值