一分钟带你入门Selenium入门!【建议收藏】

news2024/9/26 1:18:30

Selenium入门

欢迎阅读Selenium入门讲义,本讲义将会重点介绍Selenium的入门知识以及Selenium的前置知识。

自动化测试的基础

在Selenium的课程以前,我们先回顾一下软件测试的基本原理,为我们进一步完成Selenium自动化测试做好准备。

软件测试的发展

G.J.Myers在其经典的著作《软件测试艺术》(The Art of Software Testing)一书中,给出了测试的定义:

“程序测试是为了发现错误而执行的过程。”

这个概念产生于30年前,对软件测试的认识还非常有局限性,当然也是因为受瀑布开发模型的影响,认为软件测试是编程之后的一个阶段。只有等待代码开发出来以后,通过执行程序,像用户那样操作软件去发现问题。

上述也就是动态测试。随后延伸到静态测试,也就是在对于写代码之前的文档、以及编码过程中的代码进行代码扫描、评审等。

当前,软件测试贯穿到整个软件开发生命周期的全过程中,不再停留在编程之后的某个阶段,尤其是敏捷开发开始广泛的应用于互联网行业以后,敏捷测试就把软件测试解释为对软件产品质量的持续评估。在敏捷方法中,持续测试被提倡。当前的持续测试的实施,主要依托于持续集成。

持续集成和持续测试的产生和发展,对自动化测试产生了比较高的要求。此外随着大数据和机器学习的发展,对自动化测试的需求越来越迫切。

简单的描述一下 持续集成,Continuous Integration,简称CI。是一种软件工程实践:项目需要经常性的集成,进行代码编译,版本构建,自动化的部署以及部署后的自动化测试。也是云开发测试模式的一种。

持续集成构成了持续交付的基础。

自动化测试:以人为驱动的测试行为转化为机器执行的一种过程

软件测试的维度

  • 从软件测试的过程看:单元测试、集成测试、确认测试、系统测试、验收测试
  • 从软件测试的方法看:白盒测试、黑盒测试、灰盒测试
  • 从软件测试的测试点看:功能测试、性能测试、兼容性测试、安全测试、探索性测试
  • 从软件测试的技术程度看:手工测试、自动化测试、测试开发

自动化测试的场景

自动化测试应用的场景:

  • 功能测试的自动化:测试界面显示、测试业务逻辑、测试数据导入导出、测试接口功能
  • 性能测试的自动化:测试压力和负载、测试接口的性能等
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】

什么样的项目适合自动化测试

  1. 任务测试明确,不会频繁变动
  2. 每日构建后的测试验证
  3. 比较频繁的回归测试
  4. 软件系统界面稳定,变动少
  5. 需要在多平台上运行的相同测试案例、组合遍历型的测试、大量的重复任务
  6. 软件维护周期长
  7. 项目进度压力不太大
  8. 被测软件系统开发比较规范,能够保证系统的可测试性
  9. 具备大量的自动化测试平台
  10. 测试人员具备较强的编程能力

自动化测试工具介绍

  • HP UFT (QTP)
  • Selenium
  • HP LoadRunner
  • Robot Framework
  • Watir (web application test in ruby)
  • SoapUI
  • MonkeyRunner

Web测试技术

Selenium是一款出色的Web自动测试工具,那么在使用之前,Web测试的基本技术也是必须需要了解的。

相关测试技术:

| 基础技术 | 高阶技术 |
| ------------------------------ | ---------- |
| Python/Java语言 | Ajax |
| Html和CSS | Html5+CSS3 |
| JavaScript语言和框架(其中jQuery是基础框架) | Bootstrap |
| JSON和XML | AngularJS |

相关测试工具:

| 工具 | 描述 | 参考 |
| ------- | ---------------------- | --------------------------------------- |
| Firebug | FireFox火狐浏览器所自带的一个前端插件 | 下载地址:http://getfirebug.com |
| PyChram | JetBrains公司的Python开发工具 | 下载地址:https://www.jetbrains.com/pycharm/ |
| IDEA | JetBrains公司的Java开发工具 | 下载地址:https://www.jetbrains.com/idea/ |
| 开发者工具 | Chrome浏览器的开发者工具 | 打开Chrome浏览器,按F12,打开开发者工具 |
| SVN/Git | 源代码管理工具 | 开源版的源代码管理工具 |

什么是Selenium

Selenium

Selenium is a suite oftools to automate web browsers across many platforms.
硒, /sə'liniəm/
Selenium是开源的自动化测试工具,它主要是用于Web 应用程序的自动化测试,不只局限于此,同时支持所有基于web 的管理任务自动化。

Selenium 是用于测试 Web 应用程序用户界面 (UI) 的常用框架。它是一款用于运行端到端功能测试的超强工具。您可以使用多个编程语言编写测试,并且 Selenium 能够在一个或多个浏览器中执行这些测试。

Selenium经历了两个版本,Selenium1.0 和Selenium2.0,Selenium 也不是简单一个工具,而是由几个工具组成,每个工具都有其特点和应用场景。

Selenium是在2004年由一个叫Jason Huggins的聪明的年轻人开发的,当时身处ThoughtWorks的他,为了不想让自己的时间浪费在无聊的重复性工作中,所以开发一个JS的类库来驱动浏览器页面的行为;这个js类库就是selenium core,同时也是seleniumRC、Selenium IDE的核心组件。这就是Selenium1.0的产生史。

在2006年,在google的一位有胆识的年轻人Simon Stewart发起了一个叫WebDriver的项目;因为长期以来google一直是selenium的重度用户,但却总是被限制在有限的操控范围内,所以Simon希望能通过浏览器、操作系统的底层方法等一些手段来直接操作浏览器;这样就避免了在JavaScript的沙箱环境里存在的那些限制了,webdriver项目就此诞生!

在2008年,Selenium和webdriver结合了,从此永结良缘,福泽我们广大的测试工作者。这期间谁追的谁都不重要了,重要的是他们合并的原因正如webdriver的作者所说:

部分原因是 selenium 补充了 webdriver 的不足
部分原因是 webdriver 补充了 selenium 的不足
部分原因是它们合体后能给用户提供一个更好的自动化测试框架

所以管它呢,现在大家有一个比较好用的 selenium 就行了!

Selenium 1 和 WebDriver 合并成一款性能更佳的产品 Selenium 2(或 Selenium WebDriver),该款产品发行于 2011 年。Selenium 2 具有来自 WebDriver 的清晰面向对象 API,并能以最佳的方式与浏览器进行交互。Selenium 2 不使用 JavaScript 沙盒,它支持多种浏览器和多语言绑定。

为什么选择 Selenium

Selenium特点:

  • 开源,免费
  • 多浏览器支持:Firefox、Chrome、IE、Opera、Safari
  • 多平台支持:Linux 、windows、Mac
  • 多语言支持:Java、Python、ruby、PHP、C#、JavaScript
  • 对web 页面有良好的支持
  • 简单(API 简单)、灵活(用开发语言驱动)
  • 支持分布式测试用例执行

Selenium的家谱

Selenium到目前为止已经经历了两个版本:Selenium 1.0Selenium2.0.

Selenium官方网站: http://docs.seleniumhq.org github: https:// github.com/SeleniumHQ/selenium

Selenium1.0:包括 Selenium IDE,Selenium Grid和Selenium RC(Selenium Remote Control)

Selenium IDE 是嵌入到Firefox 浏览器中的一个插件,实现简单的浏览器操作的录制与回放功能。
那么什么情况下用到它呢?
快速的创建bug 重现脚本,在测试人员的测试过程中,发现了bug 之后可以通过IDE 将重现的步骤录制下来,以帮助开发人员更容易的重现bug。
IDE 录制的脚本可以可以转换成多种语言,从而帮助我们快速的开发脚本。

Selenium IDE 下载地址:https://addons.mozilla.org/en-US/firefox/addon/selenium-ide/

Selenium Grid 是一种自动化的测试辅助工具,Grid 通过利用现有的计算机基础设施,能加快WebApp的功能测试。利用Grid,可以很方便地同时在多台机器上和异构环境中并行运行多个测试事例。其特点为:

  • 并行执行
  • 通过一个主机统一控制用例在不同环境、不同浏览器下运行。
  • 灵活添加变动测试机

Selenium RC 是selenium 家族的核心工具,Selenium RC 支持多种不同的语言编写自动化测试脚本,通过selenium RC 的服务器作为代理服务器去访问应用从而达到测试的目的。
selenium RC 使用分Client Libraries 和Selenium Server。

  • Client Libraries 库主要主要用于编写测试脚本,用来控制selenium Server 的库。
  • Selenium Server 负责控制浏览器行为,总的来说,Selenium Server 主要包括3 个部分:Launcher、Http Proxy、Core。

Selenium Core 是被Selenium Server 嵌入到浏览器页面中的。Selenium Core就是一堆JavaScript函数的集合,就是通过这些JavaScript函数,我们才可以实现用程序对浏览器进行操作。

Launcher 用于启动浏览器,把Selenium Core 加载到浏览器页面当中,并把浏览器的代理设置为Selenium Server 的Http Proxy。

Selenium2.0:包括了WebDriver。其实在Selenium2.0中主推的就是WebDriver这个模块。事实上WebDriver是Selenium RC的替代品,因为Selenium需要保留向下兼容性的原因,Selenium RC才没有被彻底的抛弃,如果使用Selenium开发一个新的自动化测试项目,那么我们强烈推荐使用Selenium2.0的WebDriver进行编码。

Selenium2.0 = Selenium1.0 + WebDriver

Selenium RC的实质是在浏览器中运行一个JavaScript应用程序,使用每个浏览器内置的JavaScript解释器来解释和执行Selenium的命令集合。

Selenium WebDriver与上述的Selenium RC是不同的。WebDriver针对不同的浏览器进行开发,取代了RC那样嵌入到被测试的WebApp程序中的JavaScript,使用了与浏览器更加集成的方式进行测试,避免了RC使用JavaScript而可能遇到的安全模型限制导致的问题等。

在此我们也更加推荐读者使用Selenium2.0的WebDriver开始学习。

编程语言的选择

Selenium1.0代表的是经典,Selenium2.0代表的是未来。

我们在此重点关注Selenium2.0的WebDriver。而WebDriver面临的第一个选择就是编程语言。WebDriver支持众多的编程语言,例如,C#、Ruby、Python、 Java、Javacript、Objective-C、PHP。我们在使用之前必须要确定一种。

编程语言的选择,我们选了Python。而没有选择更加流行的C#或者Java,主要出于以下几个原因。

  • 测试人员的编程能力普遍不是很强,而Python作为一种脚本语言,不仅功能强大,而且语法优美,支持多种自动化测试工具,而且学习上手比较容易。
  • Python的社区发展比较好,有着非常多的文档和支持库,另外Python也可以在Web开发、数据处理、科学计算等纵多领域有着非常好的应用前景。
  • 对于有一定编程基础的人员,使用Python作为自动化测试的语言可以非常顺畅的转换,几乎没有学习成本。同时Python是标准的面向对象的编程语言,对于C#、Java等面向对象的语言有着非常好的示例作用,通过Python的示例可以非常轻松的触类旁通,使用其他语言进行Selenium2.0的WebDriver的使用。

Python

/'paɪθən/

Python的创始人为Guido Van Rossum。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为ABC 语言的一种继承。之所以选中Python(大蟒蛇的意思)作为程序的名字,是因为他是一个叫Monty Python的喜剧团体的爱好者。

Python 语言除了在自动化测试领域有出色的表现外,在系统编程,网络编程,web 开发,GUI开发,科学计算,游戏开发等多个领域应用非常广泛,而且具有非常良好的社区支持。也就是说学习和掌握python 编程,其实是为你打开了一道更广阔的大门。

接下来的示例我们将全部使用Python进行讲解。同时也建议在学习的过程中对于Python的相关语法进一步的学习。

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

最后: 可以在公众号:自动化测试老司机! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

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

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

相关文章

解决GNURadio自定义Python OOT块-导入块时报错问题

文章目录 前言一、问题描述二、解决方法1、卸载已安装的 OOT 块2、重新编译及安装3、重新测试 前言 本文记录在 GNURadio 自定义Python OOT 块后导入块时报错 ModuleNotFoundError: No module named xxx。 一、问题描述 参考官方教程 Creating Python OOT with gr-modtool 创…

【ppt技巧】PPT转换为图片,方法有哪些?

想要将ppt文件转换为图片,其实很简单,一起来看一下如何操作吧! 方法一: 使用格式转换器,有些文件格式转换器,支持ppt转换为图片。 方法二: 不需要转换器,直接在ppt中进行操作即可…

linux上安装locust并进行压测demo

我的linux服务器上有两个python版本 使用python3 pip3 install locust 过程中有一些报错 第一个报错 gcc: error trying to exec cc1plus: execvp: No such file or directoryerror: command gcc failed with exit status 1第二个报错 src/greenlet/greenlet_refs.hpp:181:19…

数据库:基本操作与用户授权

一 基本操作 1 SQL分类 数据库:database 表:table,行:row 列:column 索引:index 视图:view 存储过程:procedure 存储函数:function 触发器:trigger 事…

文件操作:文本文件(写/读)

文件操作可以将数据永久化&#xff0c;C中对文件操作需要包含头文件 < fstream > 文件类型分为两种&#xff1a; 1. 文本文件&#xff1a;文件以文本的ASCII码形式存储在计算机中 2. 二进制文件&#xff1a;文件以文本的二进制形式存储在计算机中&#xff0c;…

理解计算属性等

计算属性 计算属性的作用是将写在computed内的写了对应的属性名&#xff0c;属性值都是函数&#xff0c;将这属性值的函数调用之后的返回值赋给属性名的变量。因此其实计算属性内的是值&#xff0c;不是方法&#xff0c;因此写插值等语句是只是写变量&#xff0c;而不是调用。且…

电气接点在线测温解决方案--ARTM电气接点在线测温装置

ARTM系列电气接点在线测温装置适用于高低压开关柜内电缆接头、断路器触头、刀闸开关、高压电缆中间头、干式变压低压大电流等设备的温度监测&#xff0c;防止在运行过程中因氧化、松动、灰尘等因素造成接点接触电阻过大而发热成为安全隐者、患&#xff0c;提高设备安全保障&…

Linux 磁盘的一生

注意&#xff1a;实验环境都是使用VMware模拟 ​ 磁盘接口类型这里vm中是SCSI&#xff0c;扩展sata,ide(有时间可以看看或者磁盘的历史) ​ 总结&#xff1a;磁盘从有到无—类似于建房子到可以住 ————————————————————————————————————…

【MyBatis】in根据查询的顺序返回结果

目标效果&#xff1a;根据in中元素的顺序返回结果 查询id为&#xff08;2&#xff0c;4&#xff0c;1&#xff0c;3&#xff09;的数据&#xff0c;并按此顺序返回 第一次尝试 select id, name from tb_shop where id in (2, 4, 1, 3);期待效果 实际效果 正确的语句 select …

Chrome浏览器扩展插件开发

manifest.json: {"manifest_version": 3,"name": "ChatGPT学习","version": "0.0.1","description": "ChatGPT,GPT-4,Claude3,Midjourney,Stable Diffusion,AI,人工智能,AI","icons": {&quo…

Effect:由渲染本身引起的副作用

React 组件中的两种逻辑类型&#xff1a; 渲染逻辑代码 位于组件的顶层&#xff0c;接收 props 和 state&#xff0c;进行转换&#xff0c;返回屏幕上看到的 JSX&#xff0c;只计算不做其他任何事情&#xff1b;事件处理程序 嵌套在组件内部的函数&#xff0c;由特定的用户操作…

一句命令解决huggingface.co无法下载模型问题

血来潮从github上下载的模型&#xff0c;在运行demo点批发的时候&#xff0c;发现大模型并不能直接从huggingface上直接下载&#xff0c;这是因为众所周知的网络问题。 其实只要一句命令就可以解决这个问题。 export HF_ENDPOINThttps://hf-mirror.com修改HF_ENDPOINT系统变量…

极客早报第3期:罗斯否认插足凯特王妃婚姻;清明放假调休3天;国产伟哥去年销售近13亿

一分钟速览新闻点&#xff01; 每日简报 罗斯否认插足凯特王妃婚姻清明放假调休3天国产伟哥去年销售近13亿男子持台球杆殴打2名女店员被抓今日春分淀粉肠小王子带货日销售额涨超10倍[高中生被打伤下体休学 邯郸通报](https://www.baidu.com/s?wd高中生被打伤下体休学 邯郸通报…

表的约束【mysql数据库】

表中一定要有各种约束&#xff0c;通过约束来保证未来插入表格的数据是符合预期的。约束本质是通过技术手段倒闭程序员插入正确的数据。反过来&#xff0c;站在mysql视角&#xff0c;插入进来的数据&#xff0c;都是符合数据约束的。 约束的最终目标&#xff1a;保证数据的完整…

腾讯云优惠券、代金券、折扣券领取方法及使用教程

腾讯云作为国内领先的云计算服务提供商&#xff0c;一直致力于为广大用户提供高效、稳定、安全的云服务。为了吸引用户上云&#xff0c;腾讯云经常推出各种优惠活动&#xff0c;其中就包括腾讯云优惠券。下面小编将详细介绍腾讯云优惠券的相关信息&#xff0c;包括种类、领取入…

力扣---完全平方数

思路&#xff1a; 还是比较好想的&#xff0c;g[i]定义为和为 i 的完全平方数的最少数量。那么递推关系式是g[i]min(g[i-1],g[i-4],g[i-9],...)1&#xff0c;数组初始化是g[0]0,g[1]1。注意这里要对g[0]初始化&#xff0c;&#xff08;举个例子&#xff09;因为在遍历到g[4]时&…

算法系列--递归

一.如何理解递归 递归对于初学者来说是一个非常抽象的概念,笔者在第一次学习时也是迷迷糊糊的(二叉树遍历),递归的代码看起来非常的简洁,优美,但是如何想出来递归的思路或者为什么能用递归这是初学者很难分析出来的 笔者在学习的过程中通过刷题,也总结出自己的一些经验,总结来…

[数据集][目标检测]高质量铁路轨道缺陷检测数据集VOC+YOLO格式1050张6类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1050 标注数量(xml文件个数)&#xff1a;1050 标注数量(txt文件个数)&#xff1a;1050 标注…

Altair CFD™ 无比宽广的 CFD 仿真解决方案范围

Altair CFD 提供了一套全面的工具来解决流体力学问题。无论您是要对建筑物进行热分析、预测车辆空气动力学、优化齿轮箱加油、降低冷却风扇噪音还是开发创新医疗设备&#xff0c;Altair CFD 都可以提供帮助。 提供多种方法&#xff0c;包括&#xff1a; 用于热和通用应用的通…

公职人员上班时间看股票,该不该上纲上线?

公职人员炒股是一个复杂的问题&#xff0c;需要综合考虑多方面的因素。首先&#xff0c;炒股作为一种个人投资行为&#xff0c;本身并不违法&#xff0c;但在特定情况下&#xff0c;公职人员参与股市投资可能会引发一些问题和争议。 对于公职人员炒股&#xff0c;关键是要确保其…