【自动化测试入门】Selenium基础(建议收藏)

 🔥 交流讨论:欢迎加入我们一起学习!

🔥 资源分享耗时200+小时精选的「软件测试」资料包

🔥 教程推荐:火遍全网的《软件测试》教程  

📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

elenium简介

1、什么是Selenium

Selenium 是支持 Web 浏览器自动化的一系列工具和库的综合项目。

它提供了扩展来模拟用户与浏览器的交互,用于扩展浏览器分配的分发服务器, 以及用于实现 W3C WebDriver 规范的基础结构, 该 规范 允许您为所有主要 Web 浏览器编写可互换的代码。

Selenium 的核心是 WebDriver,这是一个编写指令集的接口,可以在许多浏览器中互换运行。

Selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决Requests无法执行JavaScript代码的问题。

三大组件

Selenium 不仅仅是一个工具或 API, 它还包含许多工具如:

Selenium WebDriver

WebDriver 以本地化方式驱动浏览器,是一个浏览器自动化测试的 API集合。它提供了很多与浏览器自动化交互的特性,并且这些API主要是用于测试Web程序。

提供相对应的 API 来操作浏览器,比如:ChromeFireFoxIE 等

Selenium WebDriver 指的是语言绑定和各个浏览器控制代码的实现。这通常被称为 WebDriver

Selenium WebDriver 是 W3C 推荐标准

  • WebDriver 被设计成一个简单和简洁的编程接口。

  • WebDriver 是一个简洁的面向对象 API。

  • 它能有效地驱动浏览器。

Selenium IDE

是一款面向 Web 的录制与回放的自动化测试工具。这对于刚介入自动化的测试人员来说,从这个入手再好不过了。

Selenium Grid

Selenium Grid 允许通过将客户端发送的命令路由到远程浏览器实例来在远程机器上执行 WebDriver 脚本。

Grid 的目标:

  • 提供一种在多台机器上并行运行测试的简单方法

  • 允许在不同的浏览器版本上进行测试

  • 启用跨平台测试

2、selenium的用途

*Selenium* 有很多功能, 但其核心是 Web 浏览器自动化的一个工具集, 它使用最好的技术来远程控制浏览器实例, 并模拟用户与浏览器的交互。

它允许用户模拟终端用户执行的常见活动;将文本输入到字段中,选择下拉值和复选框,并单击文档中的链接。它还提供许多其他控件,比如鼠标移动、任意 JavaScript 执行等等。

(1)Selenium可以驱动浏览器自动执行自定义好的逻辑代码,也就是可以通过代码完全模拟成人类使用浏览器自动访问目标站点并操作,那我们也可以拿它来做爬虫。

(2)Selenium本质上是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等...进而拿到网页渲染之后的结果,可支持多种浏览器

3、Selenium的优缺点

(1)优点

开源免费

Selenium是由志愿者开源贡献实现的,因此源代码免费提供给任何人使用,并且你可以通过这些源码进行修改及改进

跨平台多语言支持

Selenium它是一个支持在多个不同的操作系统中执行,并且通过webdriver协议(采用的w3c标准)规定了标准使得可以在任何语言都能够使用Selenium,但目前Selenium仅支持C#,RubyJavaPHPPythonJavaScript等主流的编程语言,多平台目前支持windows ,AndroidmacLinux

多语言支持

跨浏览器支持

Selenium 也支持在不同的浏览器间进行测试,目前的主流浏览器都支持,目前能支持的浏览器内核有:

社区活跃出现问题能及时解决,

Selenium 起源 2004年,发展的时间接近快20年了,而且Selenium的更新速度也非常积极与频繁,因此社区生态建设的也非常完善,且教程文档也比较齐全,现在只要你百度搜索相关Selenium到处都是,因此Selenium是我们测试工程师需要掌握的必不可少的工具。

支持移动端,

目前的Selenium已经对移动端的浏览器提供了非常好的支持,用于测试H5Appium要方便得多。

较为庞大的插件库,

Selenium 由于是开源的,少不了大佬们的各种魔改或者扩展开发,目前基于Selenium开发或者扩展的工具多不下1000个,github中随处可找到。

(2)缺点

需要编码能力才能上手,无法使用界面来进行编写自动化测试

由于目前测试倡导低代码,无代码测试,且不是任何一个测试人员都掌握的编程基础。因此如果不会编程基础的同学来讲Selenium确实是需要一定的学习成本,由于Selenium仅支持代码形式来做自动化测试,无法提供可视化界面来进行测试。

没有内置的图像比较及处理等方案

Selenium 本身对于图形处理能力较弱甚至并没有内置的图像处理及比较的解决方案,因此我们还需要自行去想办法解决图像相关的难题如:图形验证码,滑动块验证,Canvas

没有测试报告的能力

Selenium本身不具备测试报告能力,这因此我们也需要借助其他第三方框架或者自行对测试报告做些相对应的解决方案处理。

没有官方的技术支持

由于是社区开源贡献者开发的,无法进行找到对应的官方负责团队进行提供技术支持

Selenium的安装

1、下载Selenium模块:

pip install selenium==3.141.0

2、浏览器驱动下载

(1)Google浏览器驱动:https://sites.google.com/a/chromium.org/chromedriver/downloads

国内访问:http://chromedriver.storage.googleapis.com/index.html

(2)firefox浏览器驱动:https://github.com/mozilla/geckodriver/releases

(3)IE浏览器驱动:http://selenium-release.storage.googleapis.com/index.html

(4)edge浏览器驱动:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/

配置驱动环境

要想Selenium Client 能找到驱动程序有二种方式:

第一指定驱动路径(不配置PATH环境变量):

 
  1. from selenium import webdriver

  2. browser = webdriver.Chrome(executable_path="D:\drivers\chromedriver.exe",options=options)

设置环境变量

配置Python 根目录环境,即可实现无需传递驱动程序的指定位置来启动webdriver

我的电脑 -> 属性 -> 高级系统设置

初识Selenium

第一个selenium脚本

我们现在可以开始创建和运行自动化测试脚本了,就从Selenium WebDriver开始,然后创建一个Python脚 本,用Selenium WebDriver提供的类和方法模拟用户与 浏览器的交互。

我们会使用一个自行开发的Web应用程序,来完成我们后续的所有的实操示例。

一个简单的登录示例:

 
  1. from selenium import webdriver

  2. import time

  3. # 实例化 webdriver

  4. browser = webdriver.Chrome()

  5. # 最大浏览器尺寸

  6. browser.maximize_window()

  7. # 浏览器输入url,并传送至指定的url页面

  8. browser.get(url="http://127.0.0.1:8066/")

  9. login_btn = browser.find_element_by_id("login-btn")

  10. login_btn.click()

  11. username = browser.find_element_by_id('username')

  12. pwd = browser.find_element_by_id('password')

  13. btu = browser.find_element_by_xpath('//*[@id="app"]/div[3]/div[2]/div[2]/button')

  14. username.send_keys("13453001")

  15. pwd.send_keys("123456")

  16. btu.click()

  17. time.sleep(10)

  18. browser.quit()

使用Python的IDLE来作为今后的练习环境,对初学者来说是一个极佳的学习体验。

该环境也称为Python 交互式环境,后续我们做项目的时候再来使用其他编辑器开发,学习,练习我们将使用交互式环境。

今天的分享就到此结束了, 如果文章对你有帮助,记得点赞,收藏,加关注。会不定期分享一些干货哦......

最后我邀请你进入我们的【软件测试学习交流群:785128166】, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:程序员二黑】自提!

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

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

相关文章

【Android】 四大组件详解之广播接收器、内容提供器

目录 前言广播机制简介系统广播动态注册实现监听网络变化静态注册实现开机自启动 自定义广播发送标准广播发送有序广播 本地广播 内容提供器简介运行时权限访问其他程序中的数据ContentResolver的基本用法读取系统联系人 创建自己的内容提供器创建内容提供器的步骤 跨程序数据共…

vivado 创建和运行链路清扫

创建和运行链路清扫 要分析给定链路的裕度 , 利用不同 MGT 设置来多次运行链路扫描是很有效的。这样有助于判定最佳设置。 Vivado Serial I/O Analyzer 功能支持您定义、运行、保存和重新调用链路清扫 , 链路清扫是由多次链路扫描集合而成的。 每条…

HTML中的文档声明

前言 什么是<!DOCTYPE>&#xff1f;是否需要在 HTML5 中使用&#xff1f;什么是严格模式与混杂模式&#xff1f; 文档声明概念 HTML 文档通常以文档声明开始&#xff0c;该声明的作用是帮助浏览器确定其尝试解析和显示的 HTML 文档类型。 <!DOCTYPE html>文档声…

Allure精通指南(05)定制化报告内容(环境信息、图标、缺陷类别)

文章目录 Allure 自定义测试环境信息Allure 自定义缺陷类别信息Allure 自定义图标步骤一步骤二步骤三 Allure 自定义测试环境信息 步骤 1&#xff1a;创建 environment.properties 文件 在项目根目录或任何其他不会被--clean-alluredir参数影响的目录下创建 environment.proper…

【链表】Leetcode K个一组翻转链表

题目讲解 25. K 个一组翻转链表 算法讲解 虽然这道题是一道困难题&#xff0c;但是从代码层面很简单&#xff0c;只是一道简单的模拟&#xff1a;我们要先求出总共需要翻转的链表有多少组&#xff08;链表的长度 / k&#xff09;&#xff0c;接下来就是翻转k的链表最链接的问…

Tomcat安装步骤及详细配置教程(2022最新版)

网上的tomcat安装及配置教程一大堆&#xff0c;但是好多都过时了&#xff0c;根本不适用现在的版本&#xff0c;今天凯歌整理一篇Tomcat安装步骤及详细配置教程&#xff0c;2022年最新版~ Tomcat安装及配置教程主要分为四步&#xff1a; 步骤一&#xff1a;首先确认自己是否已…

【C++进阶之路】C++11(下) —— 线程库

序言 本篇文章主要是填之前C11留下的坑以及了解与熟悉线程库&#xff0c;有读者感兴趣之前的内容的话可见「C进阶之路」专栏中标题为「C11」的内容&#xff0c;废话不多说&#xff0c;先来概括一下本文的内容&#xff0c;首先我们会从历史的角度分别谈及Linux以及Windows下的线…

JavaEE 初阶篇-深入了解 I/O 高级流(缓冲流、交换流、数据流和序列化流)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 缓冲流概述 1.1 缓冲流的工作原理 1.2 使用缓冲流的步骤 1.3 字节缓冲流于字符缓冲流的区别 1.4 字节缓冲流的实例 1.5 字符缓冲流的实例 2.0 转换流概述 2.1 字符…

13-Makefile_04

使用函数 在更复杂的工程中&#xff0c;头文件、源文件可能会放在二级目录&#xff0c;为了实现这种操作通常需要使用Makefile的函数。 函数格式及示例 在Makefile中调用函数的方法跟变量的使用类似&#xff0c;以“$()”或“${}”符号包含函数名和参数&#xff0c;具体语法…

区块链技术与应用学习笔记(8-9节)——北大肖臻课程

目录 8.挖矿 对于全节点和轻节点思考问题&#xff1f; ①全节点在比特币的主要作用&#xff1f; ②挖矿时当监听到别人已经挖出区块并且延申了最长合法链此时应该立刻放弃当前区块在 本地重新组装一个指向最后这个新合法区块的候选区块&#xff0c;重新开始挖矿。节点这么做…

【C++】STL-vector的使用

目录 1、什么是vector&#xff1f; 2、vector的使用 2.1 vector的定义 ​编辑 2.2 遍历修改数据 2.3 迭代器 2.4 vector空间增长问题 2.5 vector的增删查改 3、迭代器失效 3.1 会引起其底层空间改变的操作&#xff0c;都有可能是迭代器失效 3.2 指定位置元素的删除操…

stable diffusion Temporal-kit和EbSynth视频转动画学习笔记

1、打开stable diffsuion webui 点击Temporal-kit 页签&#xff0c;再点击预处理pre-processing,上传视频 在工作目录下得到拆分的关键帧,在input目录里 打开图生图&#xff0c;输入正反描述词&#xff0c;其他配置如下 批量生成图片&#xff0c;找到最满意的那一张&#xff0…

python-opencv实现最近邻插值和双线性插值对图片上采样

使用背景 当我们需要把图像进行放大或者缩小的时候&#xff0c;第一反应是使用resize()实现。很多情况下&#xff0c;我们会调用最近邻插值和双线性插值去放大图片&#xff0c;当然要说没有分辨率的损失那是不可能的&#xff0c;只能说在放大图片的过程中尽可能增加了图片的分…

stm32开发之netxduo组件之mqtt客户端的使用记录

前言 1使用mqtt协议的简单示例记录 代码 MQTT服务端(C# 编写,使用MQTTnet提供的示例代码) 主程序 namespace ConsoleApp1;public class Program {public static async Task Main(string[] args){await Run_Server_With_Logging();}}public static async Task Run_Server_Wi…

js如何点击生成4位随机数

效果图&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>Generat…

软件开发最近很吃香,嵌入式建议转行吗?

在当今时代&#xff0c;软件开发确实备受瞩目&#xff0c;也相当吃香。那么&#xff0c;对于嵌入式领域&#xff0c;我们是否应该考虑转行呢&#xff1f; 事实上&#xff0c;嵌入式工程师的薪资水平相较于互联网行业&#xff0c;在某些情况下可能会略低一些&#xff0c;尤其是…

对于AIGC(人工智能)我们应该如何看待

文章目录 前言一、AIGC技术的现状与特点二、AIGC技术在各个领域的应用三、AIGC技术对未来社会的影响四、AIGC技术的可能发展方向 前言 随着科技的飞速发展&#xff0c;人工智能与大数据的结合日益紧密&#xff0c;AIGC&#xff08;人工智能生成内容&#xff09;技术作为这一领域…

DRF 查询(排序、过滤、分页)

查询(排序、过滤、分页) 【0】准备 &#xff08;1&#xff09;Q查询 详细内容可见&#xff1a;Django模型层-CSDN博客Django 的 Q 对象提供了一种在数据库查询中构造复杂查询的方法。当你想在单个查询中组合多个过滤条件&#xff0c;并且这些条件之间不仅仅是简单的 AND 关系…

阿里云X魔搭社区Create@AI创客松第四届冠军:MumuLab

4月13日终于迎来了线下Demo Day&#xff0c;此前阿里云 X 魔搭社区 X Datawhale CreateAI创客松已经紧锣密鼓地准备了一个多月时间&#xff0c;全球150团队报名、创作出66作品、评选出25支团队进入决赛&#xff0c;作品范围覆盖从办公效率到法律调解再到游戏互动以及构建童话世…

构建交通新动脉 激活襄阳城市发展动力

—— 襄阳环线提速改造工程通车 即从巴峡穿巫峡,便下襄阳向洛阳。襄阳,这座位于汉江之滨的历史文化古城,自古便为交通要塞,正以崭新的姿态迈入一个新时代——城市交通快速化时代。4月26日,襄阳环线提速改造工程正式通车,“一轴三环九放射”城市骨架路网体系基本形成。它不仅是…