Selenium的使用

1.简介

Selenium 是一个强大的开源工具,主要用于自动化 Web 浏览器。它允许你通过编写代码来模拟用户在浏览器中的各种操作,例如点击按钮、填写表单、刷新页面等。Selenium 的核心价值在于它能够处理动态内容,特别是那些通过 JavaScript 加载的数据,这使得它在自动化测试和数据爬取领域都非常受欢迎 。

2.核心组成

Selenium WebDriver:这是 Selenium 的核心,也是目前最主要的组件。它提供了一套面向不同编程语言的 API(如 Python、Java、C#),可以直接向浏览器发送指令,驱动浏览器进行各种操作。它能够以本地化方式直接与浏览器交互,标志着浏览器自动化的飞跃 。

Selenium IDE(集成开发环境):这是一个浏览器插件(支持 Chrome、Firefox 和 Edge),主要功能是录制和回放用户在浏览器中的操作。它非常适合快速创建简单的测试脚本或进行自动化辅助的探索性测试,但不适合构建复杂、健壮的自动化套件 。

Selenium Grid:这个工具允许你在多台机器上并行运行测试。通过一个中心点来管理不同的浏览器和操作系统组合,它可以显著缩短大型测试套件的执行时间。

3.上手实例

准备:在这之前需要安装Selenium库,在命令行中运行 pip3 install selenium

OK,现在我们开始进行实例,编写一个自动化脚本:

复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 初始化一个 Chrome 浏览器实例
driver = webdriver.Chrome()  # 确保 chromedriver 在系统路径中

try:
    # 打开百度首页
    driver.get("https://www.baidu.com")

    # 定位到搜索框元素(通过元素的ID属性)
    search_box = driver.find_element(By.ID, "kw")

    # 在搜索框中输入文本 "Selenium"
    search_box.send_keys("Selenium")

    # 模拟键盘按下回车键进行搜索
    search_box.send_keys(Keys.RETURN)

    # 使用显式等待,确保搜索结果区域已经加载出来
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "content_left"))
    )

    # 打印当前页面的标题
    print("搜索后的页面标题是:", driver.title)

finally:
    # 等待一段时间让你能看到浏览器窗口
    import time
    time.sleep(5)  # 等待5秒
    
    # 关闭浏览器
    driver.quit()

这里浏览器在完成指令后会自动关闭,这是正常现象。

代码解析

webdriver.Chrome()启动了 Chrome 浏览器。

driver.get(url)导航到指定的网址。

driver.find_element(By.ID, "kw")通过 ID 定位页面上的搜索框。

send_keys()方法用于向输入框输入文本或模拟按键。

WebDriverWait显式等待 ,它会等待某个条件(如元素出现)满足后再继续执行,这比固定的 time.sleep()更高效可靠 。

driver.quit()会关闭所有浏览器窗口并结束 WebDriver 会话,确保资源被释放。

4.查找节点

Selenium 提供了多种定位方式,如 NAMECLASS_NAMECSS_SELECTORXPATH。其中,CSS_SELECTOR在性能和可读性上通常有较好平衡,而 XPATH则非常灵活,可以处理复杂的定位场景。

单节点实例
复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By

browser = webdriver.Chrome()
browser.get('https://www.taobao.com')
input_first = browser.find_element(By.ID, 'q')
input_second = browser.find_element(By.CSS_SELECTOR, '#q')
input_third = browser.find_element(By.XPATH, '//*[@id="q"]')
print(input_first, input_second, input_third)
browser.close()
多节点实例
复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By

browser = webdriver.Chrome()
browser.get('https://www.taobao.com')
lis = browser.find_elements(By.CSS_SELECTOR, '.service-bd li')
print(lis)
browser.close()

应用场景小结:

自动化测试:这是 Selenium 最主要和最初的用途,用于对 Web 应用程序进行功能测试、回归测试等,能极大提高测试效率和覆盖率 。

网络爬虫和数据抓取:对于需要登录、有复杂 JavaScript 渲染或反爬机制较强的网站,Selenium 可以模拟真实用户行为,有效获取动态加载的数据 。

重复性网页任务自动化:例如,自动提交表单、定期检查网页内容、批量下载网页资源等任何需要在浏览器中手动重复进行的任务,都可以用 Selenium 自动化完成 。

Selenium能做的远不止这些,今后的学习将继续深挖。

相关推荐
我的xiaodoujiao1 小时前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 47--设置Selenium以无头模式运行代码
python·学习·selenium·测试工具·pytest
不会代码的小测试17 小时前
UI自动化-POM封装
开发语言·python·selenium·自动化
网络安全-杰克1 天前
Jmeter压力测试工具安装与使用
自动化测试·软件测试·测试工具·jmeter·职场和发展
Wpa.wk1 天前
接口自动化 - 接口鉴权处理常用方法
java·运维·测试工具·自动化·接口自动化
0思必得01 天前
[Web自动化] Selenium获取元素的子元素
前端·爬虫·selenium·自动化·web自动化
Wpa.wk1 天前
接口自动化 - 多环境统一文件配置 +多响应统一转换处理
运维·服务器·测试工具·自动化·接口自动化·统一配置
@zulnger1 天前
selenium 自动化测试工具实战项目(窗口切换)
selenium·测试工具·自动化
0思必得02 天前
[Web自动化] Selenium处理滚动条
前端·爬虫·python·selenium·自动化
辣香牛肉面2 天前
Wireshark v4.6.2 开源免费网络嗅探抓包工具中文便携版
网络·测试工具·wireshark
测试工程师成长之路3 天前
Serenity BDD 框架:Java + Selenium 全面指南(2026 最新)
java·开发语言·selenium