告别手动操作:使用 Python + Selenium 高效驱动 Edge 浏览器实现自动化

在当今的软件开发与数据工作中,自动化已成为提升效率的核心。无论是进行Web应用测试、批量采集网络数据,还是执行重复性的网页操作,一个可靠的浏览器自动化工具都不可或缺。虽然许多开发者习惯于使用Chrome,但基于Chromium内核的Microsoft Edge浏览器凭借其出色的性能、更低的资源占用以及与Windows系统的深度集成,正成为自动化领域的强大选择。本文将深入探讨如何利用Python生态中的利器——Selenium,来驾驭Edge浏览器,从零开始构建一套稳定、高效的自动化流程。

一、搭建坚如磐石的自动化环境

工欲善其事,必先利其器。一个正确的环境配置是成功的第一步,能避免后续许多令人头疼的版本和路径问题。

1. 核心组件:浏览器与驱动
首先,确保你使用的是最新稳定版的Microsoft Edge浏览器。你可以通过点击浏览器右上角的「...」菜单,进入「设置」>「关于Microsoft Edge」来查看并更新版本号。请务必记录下这个版本号(例如:124.0.2478.51)。

接下来,你需要下载与浏览器版本匹配的Microsoft Edge WebDriver。这个驱动是Selenium与Edge浏览器通信的桥梁,版本必须严格对应。访问EdgeDriver的官方下载页面,根据你的操作系统(Windows、macOS或Linux)和浏览器版本号,下载对应的驱动程序。

下载后,你会得到一个可执行文件(Windows上是msedgedriver.exe)。为了全局调用方便,强烈建议将其放置到系统PATH环境变量包含的目录中,例如Python安装目录下的Scripts文件夹(如C:\Python311\Scripts\)。

2. 安装Python与Selenium库
确保你的系统已安装Python(3.7及以上版本)。然后,通过pip安装Selenium库。与Java、Go或TypeScript等语言生态中的Selenium绑定库类似,Python的selenium包提供了直观的API。

pip install selenium==4. 11. 0 -i https://pypi. mirrors. ustc. edu. cn/simple/

至此,你的基础环境已经准备就绪。相比于配置C++或Java项目复杂的构建路径,Python+Selenium的组合让环境搭建变得异常简单。[AFFILIATE_SLOT_1]

二、启动浏览器与基础导航操作

环境配置好后,我们就可以开始编写代码,让浏览器“动”起来了。Selenium的webdriver模块支持多种浏览器,启动Edge的代码如下:

webdriver.edge()

from selenium import webdriver
from selenium.webdriver.edge.options import Options
edge_options = Options()
edge_options.binary_location = r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"

driver = webdriver.Edge(options=edge_options)

执行上述代码,一个全新的Edge浏览器窗口将会弹出。这是自动化旅程的起点。接下来,我们可以使用get()方法让浏览器导航到任何网址。

import time
from selenium import webdriver
from selenium.webdriver.edge.options import Options
edge_options = Options()
edge_options.binary_location = r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
driver = webdriver.Edge(options=edge_options)
driver.get('https://www.baidu.com/')
input('dengdai')
time.sleep(1)

有时,我们需要在一个浏览器实例内打开多个标签页。这时可以借助execute_script()方法执行JavaScript来实现,这比单纯依赖Selenium的原生方法更加灵活。

import time
from selenium import webdriver
from selenium.webdriver.edge.options import Options
edge_options=Options()
edge_options.binary_location = r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
driver = webdriver.Edge(options=edge_options)
driver.execute_script("window.open('https://www.bilibili.com/','_self');")
driver.execute_script("window.open('https://www.shuyishe.com/','_blank');")
driver.execute_script("window.open('https://www.shuyishe.com/course','_blank');")
input('dengdai')
time.sleep(1)

成功加载页面后,我们常常需要获取浏览器渲染完成的最终HTML代码,这对于动态网页(如由React、Vue.js构建的单页应用)的数据采集至关重要。使用driver.page_source属性即可轻松获取。

from selenium import webdriver
from selenium.webdriver.edge.options import Options
edge_options = Options()
edge_options.binary_location = r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
driver = webdriver.Edge(options=edge_options)
driver.get('http://www.baidu.com')
print(driver.page_source)
input('dengdai')

三、核心技能:定位与操作网页元素

自动化操作的灵魂在于与网页上的元素进行交互:点击按钮、输入文本、提交表单等。Selenium提供了多种强大的元素定位策略。

1. 定位元素
Selenium支持通过ID、类名、标签名、CSS选择器、XPath等多种方式定位元素。对于现代Web开发,CSS选择器因其简洁高效而被广泛推荐。定位到元素后,你可以对其进行一系列操作:

  • .click(): 模拟鼠标点击。
  • .send_keys(): 模拟键盘输入,这是实现自动填表的关键。
  • .text: 获取元素的可见文本内容。
  • .get_attribute(): 获取元素属性(如href, src)。

下面是一个在搜索框输入关键词并提交的完整示例:

from selenium import webdriver
from selenium.webdriver.edge.options import Options
from selenium.webdriver.common.by import By
edge_options = Options()
edge_options.binary_location = r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
driver = webdriver.Edge(options=edge_options)
driver.get('https://www.ryjiaoyu.com/')
driver.find_elements(by=By.TAG_NAME,value="input")[0].send_keys("Python")
input('dengdai')

你还可以模拟更复杂的键盘操作,例如按下回车键进行搜索,这比再去定位并点击搜索按钮有时更稳定。

from selenium import webdriver
from selenium.webdriver.edge.options import Options
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
edge_options = Options()
edge_options.binary_location = r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
driver = webdriver.Edge(options=edge_options)
driver.get('http://www.bilibili.com')
driver. find_element(by=By.TAG_NAME,value="input").send_keys("Python"+ Keys.ENTER)
input('dd')

2. 处理文件上传
文件上传是自动化测试中的一个常见场景。关键在于必须定位到<input type="file">元素,然后直接使用send_keys()传入本地文件的绝对路径。点击其他按钮是无效的。

from selenium import webdriver
from selenium.webdriver.edge.options import Options
from selenium.webdriver.common.by import By
edge_options = Options()
edge_options.binary_location = r'C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe'
driver = webdriver.Edge(options=edge_options)
driver.get('https://graph.baidu.com/pcpage/index?tpl_from=pc')
driver.find_elements(by=By.TAG_NAME, value="input")[1].send_keys(r"C:\Users\Asus\Desktop\e3911e3b07be846cccfe2ed920807e69.png")
#或
#input_element = driver.find_element(by=By.NAME, value="file")
#input_element.send_keys(r"E:\爬虫\img.png")
input('dengdai')

3. 浏览器导航控制
Selenium允许你像真实用户一样控制浏览器的前进和后退。

from selenium import webdriver
from selenium.webdriver.edge.options import Options
import time
edge_options = Options()
edge_options.binary_location = r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
driver = webdriver.Edge(options=edge_options)
driver.get('http://www.taobao.com') #请求网页http://www.taobao.com
driver.get('http://www.baidu.com')
driver.get('http://www.bilibili.com')
driver.back() #网页返回到上一步
time.sleep(1)
driver.forward()#网页返回到下一步
time.sleep(1)
driver.refresh() #刷新
time.sleep(1)
#driver.quit()#关闭浏览器
driver.close()

四、实战进阶与高效自动化技巧

掌握了基础操作后,我们可以进行更复杂的任务,并优化代码的健壮性和效率。

1. 批量下载资源
结合元素定位和网络请求库(如requests),可以高效地批量下载页面中的图片、文档等资源。Selenium负责渲染和获取链接,专门的下载库负责高速下载,这是一种最佳实践。

from selenium import webdriver
from selenium.webdriver.edge.options import Options
from selenium.webdriver.common.by import By
edge_options = Options()
edge_options.binary_location =r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
driver=webdriver.Edge(options=edge_options)
driver.get('https://image.baidu.com/search/index?tn=baiduimage&ie=utf-8&word=热巴')#执行JavaScript滚动操作
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(5)
img_list=driver.find_elements(By.XPATH, value="//img[@class='img_7rRSL']")
i=1
for img in img_list:
    img_url = img.get_attribute("src")
    img_data = requests.get(img_url)
    with open(f"./迪丽热巴1/{i}.png", 'wb') as f:
        f.write(img_data.content)
        i += 1

2. 等待策略:避免元素定位失败的关键 ⚠️
网页加载速度不定,直接定位元素很可能因为元素尚未加载而抛出异常。务必使用显式等待WebDriverWait)替代固定的time.sleep()。显式等待会轮询检查条件是否满足,在元素出现后立即继续执行,极大提升效率。

五、避坑指南与最佳实践总结

在实战中,你可能会遇到各种问题。以下是从大量实践中总结出的宝贵经验,能帮你节省大量调试时间。

  • 版本匹配: Edge浏览器主版本号(如124.x)与WebDriver一致即可,无需小版本完全一致。Selenium 4.x已弃用executable_path参数,应使用Service对象进行配置。executable_path
  • 路径问题: 指定路径时使用原始字符串(加r前缀)r。将驱动放入PATH后,在命令行输入msedgedriver --versionmsedgedriver验证。
  • 元素定位: 定位失败时,优先使用稳定的CSS选择器ID/XPATH,少用易变的XPathclass/tag。务必在操作前添加显式等待time.sleep()
  • 动态内容: 对于滚动加载的页面,需要在滚动后添加等待。获取图片链接时,若srcsrc为空,可尝试data-srcdata-src等属性。
  • 文件上传: 必须定位到<input type="file"><input type="file">元素,直接使用send_keys(文件路径)send_keys
  • 浏览器管理: driver.close()close()关闭当前标签页,driver.quit()quit()关闭整个浏览器并退出驱动。操作多标签页时,必须使用driver.switch_to.window(handle)driver.window_handles切换句柄。
  • 代码优化: 将浏览器配置(如无头模式--headlessedge_options.add_argument('--headless=new'))封装成函数。对于非默认安装的Edge,需在代码中指定其二进制文件路径edge_options.binary_locationbinary_location
  • 资源管理: 所有操作结束后务必调用driver.quit()driver.quit(),防止进程残留。在爬虫或自动化测试中,可以添加--disable-gpu--disable-gpu--no-sandbox--no-sandbox等参数以降低资源占用并提升兼容性。

通过本文的指南,你不仅学会了如何使用Python和Selenium驱动Edge浏览器,更重要的是掌握了一套解决实际自动化问题的系统方法和避坑经验。无论是像Python这样的脚本语言,还是Java、Go、TypeScript等,Selenium的理念是相通的。关键在于理解WebDriver的工作原理,并灵活运用等待、定位等核心策略。[AFFILIATE_SLOT_2] 现在,你可以将这些知识应用到Web测试、数据抓取或日常办公自动化中,真正解放双手,让程序为你工作。

posted on 2026-03-05 15:29  blfbuaa  阅读(286)  评论(1)    收藏  举报