Selenium基础入门:环境搭建、浏览器驱动配置及基本使用方法

news2024/12/22 18:45:49

目录

引言

一、Selenium环境搭建

1.1 Python环境准备

1.1.1 下载并安装Python

1.1.2 安装pip

1.2 Selenium库安装

1.3 浏览器驱动安装

1.3.1 ChromeDriver

1.3.2 GeckoDriver(Firefox)

1.3.3 其他浏览器驱动

1.4 IDE和插件(可选)

二、Selenium基本使用方法

2.1 第一个Selenium脚本

2.2 定位页面元素

2.3 常用操作

2.4 浏览器操作

2.5 异常处理与测试报告

三、高级话题

3.1 Page Object模式

3.2 数据驱动测试

3.3 Selenium Grid

四、总结


引言

Selenium是一个强大的Web自动化测试工具,它允许开发者编写脚本来模拟真实用户在网页上的各种操作,从而实现对Web应用功能的自动化测试。随着软件开发迭代速度的加快,自动化测试已成为企业高效交付优质软件的关键。本文将详细介绍Selenium的环境搭建、浏览器驱动配置以及基本使用方法,旨在帮助新手朋友快速上手Selenium,并能在实际项目中灵活运用。

一、Selenium环境搭建

1.1 Python环境准备

Selenium支持多种编程语言,但Python因其简洁的语法和丰富的库支持,成为许多开发者的首选。以下是Python环境的准备步骤:

1.1.1 下载并安装Python

访问Python官网:打开Python官网,选择适合你操作系统的Python版本。推荐使用Python 3.8或更高版本,以获得更好的性能和兼容性。
下载安装包:根据你的操作系统选择合适的安装包进行下载。对于Windows用户,可以选择64位或32位的安装程序;MacOS和Linux用户则需选择相应的安装包或使用源码编译安装。
安装Python:双击下载好的安装程序,按照提示进行安装。在安装过程中,建议勾选“Add Python to PATH”选项,这样可以直接在命令行中运行Python。
验证安装:安装完成后,在命令行中输入python --version或python3 --version(取决于你的系统设置),确认Python已正确安装及版本号。

1.1.2 安装pip

pip是Python的包管理工具,用于安装和管理Python包。大多数Python安装程序都会自动安装pip。如果没有安装,可以通过Python官网或第三方源进行安装。

1.2 Selenium库安装

在Python环境中,使用pip安装Selenium库是最方便的方法。在命令行中输入以下命令:

pip install selenium

如果你的系统有多个Python版本,可能需要使用pip3代替pip。

1.3 浏览器驱动安装

Selenium支持多种浏览器,但每种浏览器都需要相应的驱动程序。以下是几种常见浏览器的驱动安装方法:

1.3.1 ChromeDriver

访问ChromeDriver下载页面:访问ChromeDriver下载页面,选择与你的Chrome浏览器版本相对应的ChromeDriver版本。
下载并解压:下载后,解压(如果需要的话),并将ChromeDriver的路径添加到系统环境变量中,或者将其放在你的项目目录中。

1.3.2 GeckoDriver(Firefox)

访问GeckoDriver下载页面:访问GeckoDriver GitHub页面,下载与你的Firefox浏览器版本相对应的GeckoDriver版本。
解压并配置:下载后,解压GeckoDriver,并将其路径添加到系统环境变量中,或者指定在Selenium脚本中的路径。

1.3.3 其他浏览器驱动

对于其他浏览器(如Edge、Safari等),也需要下载并配置相应的驱动程序。具体步骤可参考各浏览器的官方文档或Selenium官方文档。

1.4 IDE和插件(可选)

虽然Selenium可以在任何文本编辑器中编写和运行,但使用集成开发环境(IDE)如PyCharm可以大大提高开发效率。PyCharm提供了代码高亮、自动补全、调试等功能,非常适合Python开发。

下载并安装PyCharm:访问PyCharm官网,下载并安装适合你操作系统的PyCharm版本。
配置Python解释器:在PyCharm中,需要配置Python解释器,确保它指向已安装的Python环境。
安装Selenium插件(如果需要):虽然Selenium本身不需要IDE插件,但一些插件(如HTMLTestRunner)可以帮助生成更直观的测试报告。

二、Selenium基本使用方法

2.1 第一个Selenium脚本

以下是一个简单的Selenium脚本示例,它使用Chrome浏览器打开百度首页,并搜索“Selenium”:

from selenium import webdriver  
  
# 初始化Chrome浏览器驱动  
driver = webdriver.Chrome()  
  
# 打开百度首页  
driver.get("https://www.baidu.com")  
  
# 在搜索框中输入“Selenium”  
search_box = driver.find_element_by_id("kw")  
search_box.send_keys("Selenium")  
  
# 点击搜索按钮  
search_button = driver.find_element_by_id("su")  
search_button.click()  
  
# 获取并打印页面标题  
print(driver.title)  
  
# 关闭浏览器  
driver.quit()

2.2 定位页面元素

Selenium提供了多种定位页面元素的方法,如ID、Name、Class Name、XPath、CSS Selector等。以下是一些示例:

# 通过ID定位  
element = driver.find_element_by_id("kw")  
  
# 通过Name定位  
element = driver.find_element_by_name("wd")  
  
# 通过XPath定位  
element = driver.find_element_by_xpath("//input[@id='kw']")  
  
# 通过CSS Selector定位  
element = driver.find_element_by_css_selector("#kw")  
  
# 通过Tag Name定位(不推荐,因为可能返回多个元素)  
elements = driver.find_elements_by_tag_name("input")

2.3 常用操作

Selenium支持多种常用操作,如点击、输入文本、获取页面信息等。

# 点击操作  
element.click()  
  
# 输入文本  
input_field = driver.find_element_by_name("username")  
input_field.send_keys("your_username")  
  
# 获取页面信息  
page_source = driver.page_source  
print(page_source)  
  
# 获取页面标题  
print(driver.title)  
  
# 获取当前URL  
print(driver.current_url)  
  
# 等待页面加载(显式等待)  
from selenium.webdriver.support.ui import WebDriverWait  
from selenium.webdriver.support import expected_conditions as EC  
from selenium.webdriver.common.by import By  
  
wait = WebDriverWait(driver, 10)  
element = wait.until(EC.presence_of_element_located((By.ID, "myElement")))

2.4 浏览器操作

Selenium还支持多种浏览器操作,如窗口切换、标签页处理等。

# 切换窗口  
handles = driver.window_handles  
driver.switch_to.window(handles[1])  # 切换到第二个窗口  
  
# 处理标签页(与窗口切换类似)  
# 注意:标签页和窗口在某些浏览器中可能被视为相同

2.5 异常处理与测试报告

在自动化测试中,异常处理是非常重要的。Selenium脚本可以使用Python的标准库unittest或第三方框架如pytest来实现异常捕获及测试报告自动生成。结合HTMLTestRunner等插件,可以生成直观的测试报告。

import unittest  
from selenium import webdriver  
  
class TestBaidu(unittest.TestCase):  
    def setUp(self):  
        self.driver = webdriver.Chrome()  
  
    def test_baidu_search(self):  
        self.driver.get("https://www.baidu.com")  
        self.assertIn("百度", self.driver.title)  
        search_box = self.driver.find_element_by_id("kw")  
        search_box.send_keys("Selenium")  
        search_button = self.driver.find_element_by_id("su")  
        search_button.click()  
  
    def tearDown(self):  
        self.driver.quit()  
  
if __name__ == "__main__":  
    unittest.main()

三、高级话题

3.1 Page Object模式

Page Object模式是一种用于自动化测试的设计模式,它将每个页面的元素和操作封装成一个类,从而提高了代码的可读性和可维护性。

3.2 数据驱动测试

数据驱动测试是一种将测试数据和测试脚本分离的方法,通过读取外部数据源(如CSV、Excel、数据库等)来驱动测试执行。这样可以大大提高测试脚本的复用性和灵活性。

3.3 Selenium Grid

Selenium Grid是一个分布式测试工具,它允许你在多台机器上并行运行测试,从而大大缩短测试时间。通过Selenium Grid,你可以将测试任务分配给不同的节点,每个节点负责执行一部分测试任务。

四、总结

Selenium是一个功能强大的Web自动化测试工具,它支持多种编程语言和浏览器,提供了丰富的API来模拟用户操作。通过本文的介绍,你应该已经掌握了Selenium的环境搭建、浏览器驱动配置以及基本使用方法。然而,自动化测试的世界远不止于此,为了进一步提升测试效率和质量,你还需要探索Selenium的高级话题,如Page Object模式、数据驱动测试、Selenium Grid等。希望本文能为你打开Selenium自动化测试的大门,让你在自动化测试的道路上越走越远。

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

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

相关文章

免费AI播客生成:notebooklm可以生成播客的两个发言人谈论的内容,从各种来源如研究论文、文章

参考: https://notebooklm.google.com/ 可以上传文章链接,ai自动生成播客两人对话: 另外notebooklm他本身也是个rag知识库对话,可以直接聊天框对话

CorrMatch复现

复现结果–Full:81.78327847863439,成功 U2PL’s splits计算量太大,不建议复现

Ubuntu 20.04 解决 nvidia-smi 出错问题

目录 一、初始问题 二、解决方法 2.1 法一 2.2 法二 三、新的问题 3.1 解决方案 3.2 进一步解决 3.3 最后解决 一、初始问题 今天要在本机上装个环境时,运行了一下 nvidia-smi 突然遇到一个问题: Failed to initialize NVML: Driver/library ver…

Qt_按钮类控件

目录 1、QAbstractButton 2、设置带图标的按钮 3、设置带有快捷键的按钮 4、QRadioButtion(单选按钮) 4.1 QButtonGroup 5、QCheckBox 结语 前言: 按钮类控件是Qt中最重要的控件类型之一,该类型的控件可以通过鼠标的点击…

了解线程池

引出线程池: 假设小编是一个女生,小编处了一个对象,但是某一天小编不想和这个男生处对象了,但是小编还是想和别的男生处对象的,于是现在我就面临两个问题:一、怎么跟现任分手 二、开始物色新的对象&#…

软件安装攻略:Sublime Text 下载安装和使用教程

Sublime Text 下载安装和使用教程 Sublime Text是一个流行的跨平台文本编辑器,它具有以下一些主要功能和特点: (1)简洁的界面和快速的速度:Sublime Text拥有简约干净的界面,启动和响应速度很快。 &#…

Visual Studio打开项目的一些小技巧

Visual Studio(VS)是一款功能强大的集成开发环境,许多刚入门C/C的小白也会使用这款软件进行写代码,然而它的操作并不简单,下面将讲解一下VS打开项目文件的一些小技巧。 目录 🎁创建空项目 ❤️①点击“创建新项目” ❤️②点击“…

Unity中InputField一些属性的理解

先看代码: using UnityEngine; using UnityEngine.UI;public class TestInput : MonoBehaviour {[SerializeField]InputField inputField;void Start(){Debug.Log(inputField.text);Debug.Log(inputField.text.Length);Debug.Log(inputField.preferredWidth);Debug…

Netty笔记02-组件EventLoop

文章目录 EventLoop概述EventLoop 的概念EventLoop 的作用EventLoop 的生命周期EventLoopGroupEventLoop 的工作原理总结 代码示例💡 优雅关闭演示 NioEventLoop 处理 io 事件解决work中的channel读操作耗费时间过长,影响其他channel(客户端)的问题&…

开源链动 2+1 模式 AI 智能名片与 S2B2C 商城小程序在用户运营中的应用

摘要: 本文深入探讨了用户运营中不同用户阶段的特点及策略,引入“开源链动 21 模式 AI 智能名片 S2B2C 商城小程序”,分析其在用户运营各个阶段的作用和价值,旨在为企业提供更高效的用户运营方案,实现用户价值的最大化…

Spring 框架——@Async 注解

目录 1.同步调用与异步调用1.1.同步调用1.2.异步调用1.3.总结 2.注解 Async 介绍2.1.用在方法上2.2.用在类上 3.使用演示3.1.在启动类或者配置类上增加 EnableAsync 注解3.2.在异步方法上增加 Async 注解3.3.调用异步方法3.4.测试3.5.其它说明 4.注意事项4.1.Async 注解失效的常…

【Qt绘图】—— 运用Qt进行绘图

目录 (一)基本概念 (二)绘制各种形状 2.1 绘制线段 2.2 绘制矩形 2.3 绘制圆形 2.4 绘制文本 2.5 设置画笔 2.6 设置画刷 (三)绘制图片 3.1 绘制简单图片 3.2 平移图片 3.3 缩放图片 3.4…

Linux 手动安装Ollama

Linux 离线安装Ollama 前言 不知道为什么 在阿里云服务器上 执行curl -fsSL https://ollama.com/install.sh | sh一键安装 非常慢 所以只能手动装了 1.到 https://ollama.com/install.sh 下载安装执行文件 修改其中 下载和安装部分代码 if curl -I --silent --fail --location…

Python数据分析-Numpy快速入门

一、什么是Numpy 二、 创建 Numpy ndarray对象 三、数组中的维度 1.各种维度数组 2.检查维度数 3.创建更高维度的数组 四、数组索引 1.访问数组元素 2.访问2-D数组元素 其他维度的同理 3.负索引 五、数据裁剪:要头不要尾 1.裁剪数组 demo: 2.负裁…

构建基于 Feign 的微服务:从 Eureka 到负载均衡的实践 --day05

目录 步骤1:创建父工程feign-1步骤2:改造服务提供者使用 RequestMapping使用 GetMapping 步骤3:改造服务消费者为Feign客户端(1)添加Feign依赖(2)添加EnableFeignClients注解(3&…

YoloV10 训练自己的数据集(推理,转化,C#部署)

目录 一、下载 三、开始训练 train.py detect.py export.py 超参数都在这个路径下 四、C#读取yolov10模型进行部署推理 如下程序是用来配置openvino 配置好引用后就可以生成dll了 再创建一个控件,作为显示 net framework 4.8版本的 再nuget工具箱里下载 …

thinkphp6开发的通用网站系统源码

thinkphp6开发的通用网站系统源码。 基于ThinkPHP6框架开发的通用后台权限管理系统,底层采用国内最流行的ThinkPHP6框架, 支持内容管理、文章管理、用户管理、权限管理、角色管理等功能。 代码下载

Cookie和Session的对比

Cookie和Sesion 一、cookie和session创建对象 2024/9/15 10:23:59 你想了解的是如何在某种编程语言中创建和管理 cookies 和 sessions 吗?如果是的话,具体是哪个语言或框架呢? 2024/9/15 10:24:09 二、创建对象是客户端还是服务器 2024/…

20Kg载重30分钟续航多旋翼无人机技术详解

一、机架与结构设计 1. 材料选择:为了确保无人机能够承载20Kg的负载,同时实现30分钟的续航,其机架材料需选用轻质高强度的材料,如碳纤维或铝合金。这些材料不仅具有良好的承重能力,还能有效减轻无人机的整体重量&…

一步一步搭建AI智能体应用

您可以在百炼控制台以零代码的方式快速创建智能体应用,并将RAG(Retrieval-Augmented Generation,检索增强生成)以及插件能力集成进来。应用创建完成后,您可以通过控制台或API的方式来使用。 以下均以 大模型应用指代 智…