基于 Selenium 的网页自动化操作实战教程
前言
随着互联网技术的发展,浏览器自动化测试和重复性任务处理的需求日益增长。Selenium 作为最流行的 Web 应用程序测试工具之一,能够模拟真实用户在浏览器中的操作。本文将详细介绍如何使用 Python 结合 Selenium 库实现网页自动化操作,并以电商购物车结算流程为例,讲解核心逻辑与代码实现。
通过 Python 的 Selenium 库可以实现浏览器自动化操作,常用于 UI 测试和重复性任务模拟。本文详细讲解了环境搭建、核心 API 使用及购物车结算流程的自动化实现逻辑,包含完整的代码示例与常见错误排查指南。内容涵盖 Chromedriver 配置、显式等待机制、元素定位方法及异常处理策略,并提供合规使用建议。

随着互联网技术的发展,浏览器自动化测试和重复性任务处理的需求日益增长。Selenium 作为最流行的 Web 应用程序测试工具之一,能够模拟真实用户在浏览器中的操作。本文将详细介绍如何使用 Python 结合 Selenium 库实现网页自动化操作,并以电商购物车结算流程为例,讲解核心逻辑与代码实现。
Selenium 是一个用于 Web 应用程序测试的工具。它直接运行在浏览器中,就像真正的用户在操作一样。通过 WebDriver 接口,程序可以控制浏览器的行为,包括打开页面、输入文本、点击按钮、获取元素属性等。
确保已安装 Python 3.6 及以上版本。可通过终端输入 python --version 检查。
使用 pip 包管理器安装 Selenium:
pip install selenium
Selenium 需要与浏览器通信,因此需要下载对应版本的 ChromeDriver。
from selenium import webdriver
driver = webdriver.Chrome()
为了避免元素未加载导致的报错,必须使用显式等待。
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.ID, "element_id")))
支持多种定位方式:ID, Name, Class Name, Tag Name, XPath, CSS Selector。 推荐使用 ID 或 CSS Selector,性能较好且稳定。
本案例演示如何自动登录并执行结算操作。请注意,实际使用时请遵守目标网站的服务条款,仅用于学习或授权测试。
现代电商平台通常提供扫码登录以增强安全性。脚本需等待用户手动扫码确认。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
import datetime
def init_driver():
options = webdriver.ChromeOptions()
# 可选:开启无头模式
# options.add_argument('--headless')
driver = webdriver.Chrome(options=options)
return driver
def login_taobao(driver):
print("正在打开淘宝登录页...")
driver.get("https://www.taobao.com")
# 等待登录框出现
try:
wait = WebDriverWait(driver, 10)
login_link = wait.until(EC.element_to_be_clickable((By.LINK_TEXT, "亲,请登录")))
login_link.click()
print("请点击二维码登录,完成后按回车键继续...")
input()
# 跳转至购物车
driver.get("https://cart.taobao.com/cart.htm")
print("登录成功")
except Exception as e:
print(f"登录过程出错:{e}")
def buy_items(driver, target_time):
print("开始执行购买流程...")
while True:
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
if now >= target_time:
break
time.sleep(1)
try:
wait = WebDriverWait(driver, 5)
# 点击全选
select_all = driver.find_element(By.ID, "J_SelectAll2")
select_all.click()
# 点击结算
checkout_btn = driver.find_element(By.XPATH, '//*[@id="J_Go"]/span')
checkout_btn.click()
print("结算请求已发送")
# 等待提交订单按钮
submit_btn = wait.until(EC.element_to_be_clickable((By.LINK_TEXT, "提交订单")))
submit_btn.click()
print("抢购时间到达,操作完成")
except Exception as e:
print(f"购买过程中发生异常:{e}")
def main():
driver = init_driver()
try:
login_taobao(driver)
# 设置抢购时间,格式:2023-11-11 20:00:00.000000
times = "2023-11-11 20:00:00.000000"
buy_items(driver, times)
finally:
# 关闭浏览器
driver.quit()
if __name__ == "__main__":
main()
原因:页面加载慢或选择器错误。
解决:增加 WebDriverWait 等待时间,检查 XPath 是否正确。
原因:驱动版本不匹配或内存不足。 解决:更新 ChromeDriver 到最新兼容版本,减少并发数。
原因:触发风控策略。 解决:引入打码平台或使用人工辅助,注意合规性。
本教程仅供技术学习与研究使用。自动化脚本的使用应严格遵守目标网站的 Robots 协议和服务条款。未经授权对商业平台进行高频自动化操作可能涉及法律风险。请勿利用本技术从事破坏交易秩序的行为。
通过本文的学习,读者掌握了 Selenium 的基本安装、API 调用及实战应用。Web 自动化是一项强大的技能,广泛应用于测试开发和运维领域。建议在实际项目中结合需求灵活调整,注重代码的可维护性与安全性。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online