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能做的远不止这些,今后的学习将继续深挖。

相关推荐
想要打 Acm 的小周同学呀13 小时前
爬虫相关的面试问题
爬虫·selenium·职场和发展
IT19951 天前
Wireshark笔记-DNS流程与数据包解析
笔记·测试工具·wireshark
Hacker_Fuchen1 天前
外包干了一个月,技术明显进步。。。。。
自动化测试·软件测试·测试工具·职场和发展
测试19982 天前
Appium使用指南与自动化测试案例详解
自动化测试·软件测试·python·测试工具·职场和发展·appium·测试用例
程序员三藏2 天前
快速弄懂POM设计模式
自动化测试·软件测试·python·selenium·测试工具·设计模式·职场和发展
程序员三藏3 天前
使用Docker和Selenium构建自动化测试环境
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
让世界再也没有bug3 天前
JMeter与Postman的区别
测试工具·jmeter·postman
优测云服务平台3 天前
质效飞跃,优测金融数智质效解决方案全新升级!
测试工具·金融
newxtc3 天前
【河北政务服务网-注册_登录安全分析报告】
人工智能·selenium·安全·yolo·政务·安全爆破