Selenium:原理与使用指南

文章目录

    • 简介
    • Selenium 的原理
    • 安装 Selenium
    • 基本使用示例
      • 代码说明
    • 常用操作
      • 查找元素
      • 交互操作
      • 等待
      • 处理弹窗
    • 高级功能
      • 截屏
      • 执行 JavaScript
      • 切换窗口
    • 结论

简介

Selenium 是一个用于 Web 应用程序自动化测试的强大工具。它提供了一系列库和工具,支持多种浏览器和编程语言,使得 Web 测试自动化变得简单和高效。

Selenium 的核心组件包括:

  • Selenium WebDriver:用于控制浏览器行为的 API。
  • Selenium IDE:一种用于录制和回放测试的工具。
  • Selenium Grid:用于并行测试的分布式系统。

官网链接:Selenium Official Documentation

Selenium 的原理

Selenium 的工作原理是通过 WebDriver 与浏览器进行交互。WebDriver 是一套协议,定义了自动化测试工具如何与浏览器通信。WebDriver 将用户的操作(如点击、输入等)转换为浏览器可理解的命令,然后浏览器执行这些命令并返回结果。

WebDriver 支持的浏览器包括 Chrome、Firefox、Safari、Edge 等。每个浏览器都有对应的驱动程序,如 ChromeDriver、GeckoDriver 等。这些驱动程序负责将 WebDriver 的命令传递给浏览器并获取响应。

安装 Selenium

首先,需要安装 Selenium 库和相应的浏览器驱动程序。以下是安装步骤:

  1. 安装 Selenium 库

    pip install selenium
    
  2. 下载浏览器驱动程序(例如 ChromeDriver):

    • ChromeDriver 下载地址:ChromeDriver
    • 将下载的驱动程序添加到系统路径中,或者指定路径。

基本使用示例

以下是一个简单的示例,展示如何使用 Selenium WebDriver 控制 Chrome 浏览器打开一个网页,并执行一些基本操作。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys# 初始化 Chrome 浏览器
driver = webdriver.Chrome(executable_path='/path/to/chromedriver')# 打开网页
driver.get("http://example.com")# 查找元素并进行操作
search_box = driver.find_element_by_name("q")
search_box.send_keys("Selenium")
search_box.send_keys(Keys.RETURN)# 验证结果
assert "No results found." not in driver.page_source# 关闭浏览器
driver.quit()

代码说明

  1. 初始化浏览器:使用 webdriver.Chrome() 初始化 Chrome 浏览器。如果 ChromeDriver 不在系统路径中,需要指定其路径。
  2. 打开网页:使用 get() 方法打开指定的 URL。
  3. 查找元素:使用 find_element_by_name() 方法查找页面上的元素,并执行输入操作。
  4. 验证结果:通过断言检查页面内容是否包含特定文本。
  5. 关闭浏览器:使用 quit() 方法关闭浏览器。

常用操作

查找元素

Selenium 提供了多种查找元素的方法:

  • find_element_by_id()
  • find_element_by_name()
  • find_element_by_xpath()
  • find_element_by_css_selector()
  • find_element_by_class_name()

交互操作

常见的交互操作包括点击、输入、选择下拉菜单等:

  • click():点击元素。
  • send_keys():向输入框发送文本。
  • clear():清空输入框。

等待

在自动化测试中,通常需要等待页面加载或元素出现。Selenium 提供了显式等待和隐式等待:

  • 显式等待
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as ECelement = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "myElement"))
    )
    
  • 隐式等待
    driver.implicitly_wait(10)  # 等待 10 秒
    

处理弹窗

Selenium 可以处理浏览器弹窗:

  • 接受弹窗:
    alert = driver.switch_to.alert
    alert.accept()
    
  • 拒绝弹窗:
    alert = driver.switch_to.alert
    alert.dismiss()
    

高级功能

截屏

Selenium 可以截取当前页面的屏幕截图:

driver.save_screenshot('screenshot.png')

执行 JavaScript

可以使用 execute_script() 方法执行 JavaScript 代码:

driver.execute_script("alert('Hello, World!');")

切换窗口

Selenium 可以在多个窗口或标签页之间切换:

driver.switch_to.window(driver.window_handles[1])

结论

Selenium 是一个功能强大且灵活的 Web 自动化测试工具。通过学习和掌握 Selenium 的基本原理和使用方法,可以显著提高 Web 测试的效率和覆盖范围。无论是简单的页面交互测试,还是复杂的多浏览器兼容性测试,Selenium 都能提供有力的支持。

更多详细信息和高级用法,请参阅 Selenium 官方文档。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1474690.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

对话大模型Prompt是否需要礼貌点?

大模型相关目录 大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步,扬帆起航。 基于Dify的QA数据集构建(附代码)Qwen-2-7B和GLM-4-9B&#x…

YOLOv8结合SAHI推理图像和视频

文章目录 前言视频效果必要环境一、完整代码二、运行方法1、 推理图像2、 推理视频 总结 前言 在上一篇文章中,我们深入探讨了如何通过结合YOLOv8和SAHI来增强小目标检测效果 ,并计算了相关评估指标,虽然我们也展示了可视化功能,…

入门PHP就来我这(高级)13 ~ 图书添加功能

有胆量你就来跟着路老师卷起来! -- 纯干货,技术知识分享 路老师给大家分享PHP语言的知识了,旨在想让大家入门PHP,并深入了解PHP语言。 今天给大家接着上篇文章编写图书添加功能。 1 添加页面 创建add.html页面样式,废…

去O化神器 Exbase

随着去O化进程推动,很多旧业务依赖的oracle数据库,都需要实现做数据库的替换,当下能很好兼容Oracle,并实现异构数据库之间转换的工具并不多。这里给大家推荐一个商业工具数据库迁移工具exbase(北京海量)&am…

排序格式排序格式

排序格式排序格式

CosyVoice - 阿里最新开源语音克隆、文本转语音项目 支持情感控制及粤语 本地一键整合包下载

近日,阿里通义实验室发布开源语音大模型项目FunAudioLLM,而且一次包含两个模型:SenseVoice和CosyVoice。 CosyVoice专注自然语音生成,支持多语言、音色和情感控制,支持中英日粤韩5种语言的生成,效果显著优于…

Java多线程不会?一文解决——

方法一 新建类如MyThread继承Thread类重写run()方法再通过new MyThread类来新建线程通过start方法启动新线程 案例&#xff1a; class MyThread extends Thread {public MyThread(String name) {super(name);}Overridepublic void run() {for(int i0;i<10;i){System.out.…

深度学习中的Channel,通道数是什么?

参考文章&#xff1a; 直观理解深度学习的卷积操作&#xff0c;超赞&#xff01;-CSDN博客​​​​​​如何理解卷积神经网络中的通道&#xff08;channel&#xff09;_神经网络通道数-CSDN博客 深度学习-卷积神经网络—卷积操作详细介绍_深度卷积的作用-CSDN博客 正文&…

土豆炒肉做法

菜单&#xff1a;土豆、葱、铁辣子、纯瘦肉、淀粉、生抽、酱油、刀、案板、十三香、盐巴、擦板 流程&#xff1a; 洗土豆&#xff0c;削皮&#xff0c;擦成条&#xff0c;用凉水过滤两遍淀粉&#xff0c;顺便放个燥里洗肉&#xff0c;切成条&#xff0c;按照生抽、酱油、淀粉、…

QT入门笔记-自定义控件封装 30

具体代码如下: QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c17# You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. #DEFINES QT_DISABLE_DEPRECATED_BEFORE0x060000 …

vue3项目 前端blocked:mixed-content问题解决方案

一、问题分析 blocked:mixed-content其实浏览器不允许在https页面里嵌入http的请求&#xff0c;现在高版本的浏览器为了用户体验&#xff0c;都不会弹窗报错&#xff0c;只会在控制台上打印一条错误信息。一般出现这个问题就是在https协议里嵌入了http请求&#xff0c;解决方法…

react dangerouslySetInnerHTML将html字符串以变量方式插入页面,点击后出现编辑状态

1.插入变量 出现以下编辑状态 2.解决 给展示富文本的标签添加css样式 pointerEvents: none

Python28-7.4 独立成分分析ICA分离混合音频

独立成分分析&#xff08;Independent Component Analysis&#xff0c;ICA&#xff09;是一种统计与计算技术&#xff0c;主要用于信号分离&#xff0c;即从多种混合信号中提取出独立的信号源。ICA在处理盲源分离&#xff08;Blind Source Separation&#xff0c;BSS&#xff0…

cmake find_package 使用笔记

目录 1 find_package2 config mode2.1 搜索的文件名2.2 搜索路径 3 module mode3.1 搜索的文件名3.2 搜索路径 参考 1 find_package 这是官方文档 下面是学习总结&#xff1a; 首先是find_package的作用是什么&#xff1f;引入预编译的库。 find_package有两种模式&#xff1a…

论文研读|AI生成图像检测发展历程及研究现状

前言&#xff1a;本篇博客系统性梳理AI生成图像检测的研究工作。 「人工智能生成图像检测」研究及发展现状介绍 参考资料 https://fdmas.github.io/AIGCDetect/针对AIGC检测的鲁棒性测试——常见攻击手段汇总论文研读&#xff5c;以真实图像为参考依据的AIGC检测论文研读&…

导航栏样式,盒子模型

1.代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>li{he…

第一百四十七节 Java数据类型教程 - Java字符串字符

Java数据类型教程 - Java字符串字符 索引字符 您可以使用charAt()方法从String对象中获取特定索引处的字符。索引从零开始。 下面的代码打印索引值和字符在“W3CSCHOOL.CN"字符串中的每个索引处: public class Main {public static void main(String[] args) {String s…

【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【21】【购物车】

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【21】【购物车】 购物车需求描述购物车数据结构数据Model抽取实现流程&#xff08;参照京东&#xff09;代码实现参考 购物车需求描述 用户可以在登录状态下将商品添加到购物车【用户购物…

读人工智能全传05专家系统

1. 知识就是力量 1.1. 人工智能领域此前存在的问题是过度关注搜索和解决问题这种通用法则 1.2. “弱”方法缺少一个关键的要素&#xff0c;而这一要素才是在所有智能行为中起决定性作用的组成部分&#xff1a;知识 1.3. 一种基于知识的人工智能系统&#xff1a;专家系统开始…

2024年第十四届亚太地区大学生数学建模竞赛(中文赛项)B题洪水灾害的数据分析与预测论文和代码分析

经过不懈的努力&#xff0c; 2024年第十四届亚太地区大学生数学建模竞赛&#xff08;中文赛项&#xff09;B题洪水灾害的数据分析与预测论文和代码已完成&#xff0c;代码为C题全部问题的代码&#xff0c;论文包括摘要、问题重述、问题分析、模型假设、符号说明、模型的建立和求…