Python-Selenium 库详解

一、Selenium 库简介

Selenium 是 Python 生态中 ​最主流的 Web 自动化测试工具,支持通过代码模拟用户操作浏览器行为。其核心特性包括:

  1. 多浏览器支持:兼容 Chrome、Firefox、Edge、Safari 等主流浏览器。
  2. 跨平台性:可在 Windows、macOS、Linux 上运行,适配不同开发环境。
  3. 功能覆盖全面:支持点击、输入、拖拽、文件上传、弹窗处理等操作,满足自动化测试、爬虫、数据采集等场景需求。
  4. 动态内容处理:通过等待机制(显式/隐式)解决 AJAX 加载、动态渲染等问题。

 

二、安装与配置
  1. 安装库

    bash

    pip install selenium
  2. 下载浏览器驱动​(以 Chrome 为例):
    • 从 ChromeDriver 官网下载对应浏览器版本的驱动。
    • 将驱动文件路径添加到系统环境变量,或在代码中指定路径。

 

三、核心功能与常用函数
1. 浏览器操作
函数/方法功能描述示例代码
​**webdriver.Chrome()**创建 Chrome 浏览器实例python<br>from selenium import webdriver<br>driver = webdriver.Chrome()
​**driver.get(url)**打开指定网页python<br>driver.get("https://www.baidu.com")
​**driver.title**获取当前页面标题python<br>print("标题:", driver.title)
​**driver.quit()**关闭浏览器并释放资源(必用)python<br>driver.quit()
2. 元素定位

Selenium 提供 ​8 种元素定位方式,常用方法如下:

定位方式函数示例适用场景
IDdriver.find_element(By.ID, "username")元素有唯一 ID 时首选
XPathdriver.find_element(By.XPATH, "//input[@class='search']")复杂结构页面,需精准定位
CSS 选择器driver.find_element(By.CSS_SELECTOR, "#submit > span")性能优于 XPath,推荐使用
类名(Class Name)​driver.find_element(By.CLASS_NAME, "btn-primary")元素有唯一类名时适用
链接文本(Link Text)​driver.find_element(By.LINK_TEXT, "立即登录")定位超链接文本完全匹配
部分链接文本driver.find_element(By.PARTIAL_LINK_TEXT, "登录")超链接文本模糊匹配
标签名(Tag Name)​driver.find_element(By.TAG_NAME, "input")定位标签类型(如所有输入框)
Name 属性driver.find_element(By.NAME, "password")元素有 name 属性时适用

 3. 元素操作

函数/方法功能描述示例代码
​**send_keys(text)**向输入框输入文本python<br>search_box = driver.find_element(By.ID, "kw")<br>search_box.send_keys("Python")
​**click()**点击元素(按钮、链接等)python<br>login_button.click()
​**clear()**清空输入框内容python<br>search_box.clear()
​**submit()**提交表单(等效于回车键)python<br>search_box.submit()
​**text 属性**获取元素文本内容python<br>print("按钮文本:", button.text)

 

4. 等待机制

处理动态加载内容的关键方法:

等待类型描述代码示例
隐式等待全局等待,设置最长等待时间(默认 0 秒)python<br>driver.implicitly_wait(10) # 所有元素查找最多等 10 秒
显式等待针对特定条件灵活等待(推荐)python<br>from selenium.webdriver.support.ui import WebDriverWait<br>from selenium.webdriver.support import expected_conditions as EC<br>element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "dynamic_element")))

 5. 高级交互

功能实现方法示例代码
鼠标操作使用 ActionChains 类模拟悬停、拖拽等行为python<br>from selenium.webdriver.common.action_chains import ActionChains<br>actions = ActionChains(driver)<br>actions.drag_and_drop(source, target).perform()
键盘操作通过 Keys 类模拟快捷键(如回车、Ctrl+C)python<br>from selenium.webdriver.common.keys import Keys<br>search_box.send_keys(Keys.CONTROL + 'a')
文件上传通过 send_keys() 直接传入文件路径python<br>upload_element = driver.find_element(By.ID, "file_input")<br>upload_element.send_keys("/path/to/file.png")
弹窗处理切换至弹窗并操作(确认/取消)python<br>alert = driver.switch_to.alert<br>alert.accept() # 确认
切换窗口/标签页通过窗口句柄管理多窗口python<br>handles = driver.window_handles<br>driver.switch_to.window(handles[1])
执行 JavaScript直接运行 JS 代码(如滚动页面)python<br>driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
截图功能保存页面或元素截图python<br>driver.save_screenshot("page.png")<br>element.screenshot("element.png")

 

四、应用场景
  1. 自动化测试
    • 验证 Web 应用功能(如登录、表单提交)。
    • 跨浏览器兼容性测试。
  2. 数据采集
    • 抓取动态渲染的网页数据(如电商价格、社交媒体内容)。
  3. 业务流程自动化
    • 自动填写报表、批量上传文件。
    • 定时签到、抢购脚本。
五、注意事项
  1. 驱动版本匹配
    • 浏览器与驱动版本需严格对应,否则会报错。
  2. 反爬机制规避
    • 添加随机等待、使用代理 IP 避免被封禁。
  3. 性能优化
    • 使用 find_elements(返回列表)替代多次 find_element
    • 避免不必要的全局隐式等待。
  4. 异常处理
    • 捕获 NoSuchElementExceptionTimeoutException 等常见异常。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值