当前位置:

首页 > 编程开发 > 如何使用Python的Selenium实现自动化测试?

如何使用Python的Selenium实现自动化测试?

1自动化测试自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行结果。将人为驱动的测试行为转化为机器执行的过程。自动化测试包括UI自动化,接口自动化,单元测试自动化。按照这个金字塔模型来进行自动化测试规划,可以产生最佳的自动化测试产出投入比(ROI),可以用较少的投入获得很好的收益。1.1单元测试最大的投入应该在单元测试上,单元测试运行的频率也更加高。java的单元测试框架是Junit。1.2接口测试接口测试就是API测试,相对于UI自动化API自动化更加容

本文目录

      1 自动化测试

      自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行结果。将人为驱动的测试行为转化为机器执行的过程。

      如何使用Python的Selenium实现自动化测试?

      自动化测试包括UI自动化,接口自动化,单元测试自动化。按照这个金字塔模型来进行自动化测试规划,可以产生最佳的自动化测试产出投入比(ROI),可以用较少的投入获得很好的收益。

      1.1 单元测试

      最大的投入应该在单元测试上,单元测试运行的频率也更加高。

      java的单元测试框架是Junit。

      1.2 接口测试

      接口测试就是API测试,相对于UI自动化API自动化更加容易实现,执行起来也更稳定。

      接口自动化的有以下特点:

      • 可在产品前期,接口完成后介入

      • 用例维护量小

      • 适合接口变动较小,界面变动频繁的项目

      常见的接口自动化测试工具有,RobotFramework,JMeter,SoapUI,TestNG+HttpClient,Postman等

      1.3 UI测试

      虽然测试金字塔告诉我们尽量多做API层的自动化测试,但是UI层的自动化测试更加贴近用户的需求和软件系统的实际业务。并且有时候我们不得不进行UI层的测试。

      UI自动化的特点:

      • 用例维护量大

      • 页面相关性强,必须后期项目页面开发完成后介入

      • UI测试适合与界面变动较小的项目

      UI层的测试框架比较多,比如Windows客户端测试的AutoIT,web测试的selenium以及TestPlant ,eggPlant,Robot framework,QTP等。

      1.3.1 UI自动化测试的优点

      降低大型系统的由于变更或者多期开发引起的大量的回归测试的人力投入,这可能是自动化测试最主要的任务,特别是在程序修改比较频繁,效果是非常明显的,自动化测试前期人力投入较多,但后期进入维护期后,可节省大量人力,而手工测试后期需要增加大量人力用于回归测试

      • 减少重复测试的时间,实现快速回归测试

      • 创建优良可靠的测试过程,减少人为错误

      • 可以运行更多更繁琐的测试

      • 可以执行一些手工测试困难或不可能进行的测试

      • 更好的利用资源

      • 测试脚本的复用性

      1.3.2 UI自动化测试的适用对象

      实施自动化测试的前提条件:需求变动不频繁、项目周期足够长、自动化测试脚本可重复使用。

      适合做自动化的项目:

      • 产品型项目。产品型的项目,新版本是在旧版本的基础上进行改进,功能变不大的项目,但项目的新老功能都必须重复的进行回归测试。回归测试是自动化测试的强项,它能够很好的验证你是否引入了新的缺陷,老的缺陷是否修改过来了。在某种程度上可以把自动化测试工具叫做回归测试工具。

      • 机械并频繁的测试。每次需要输入相同、大量的一些数据,并且在一个项目中运行的周期比较长。比如兼容性测试。

      以下情况的项目不适合做自动化测试:

      • 需求变动频繁的项目,自动化脚本不能重复使用,维护成本太大,性价比低

      • 项目周期短,自动化脚本编制完成后使用次数不多,性价比低

      • 交互型较强的项目,需要人工干预的项目,自动化无法实施

      1.4 自动化测试流程

      • 分析:总体把握系统逻辑,分析出系统的核心体系架构。

      • 设计:设计测试用例,测试用例要足够明确和清晰,覆盖面广而精

      • 实现:实现脚本,有两个要求一是断言,二是合理的运用参数化。

      • 执行:执行脚本远远没有我们想象中那么简单。脚本执行过程中的异常需要我们仔细的去分析原因。

      • 总结:测试结果的分析,和测试过程的总结是自动化测试的关键。

      • 维护:自动化测试脚本的维护是一个难以解决但又必须要解决的问题。

      • 分析:在自动化测试过程中深刻的分析自动化用例的覆盖风险和脚本维护的成本。

      2 selenium

      Selenium是web应用中基于UI的自动化测试框架,支持多平台、多浏览器、多语言。

      早期的selenium RC已经被现在的webDriver所替代,可以简单的理解为selenium1.0 +webdriver构成,现在的Selenium2.0。现在我们说起selenium,一般指的是Selenium2.0。它有由Selenium IDE,Webdriver,Selenium Grid组成。

      分别做一下介绍:

      Selenium IDE

      Selenium IDE一个用于Selenium测试的完成集成开发环境,可以直接录制在浏览器的用户操作,并且能回放,编辑和调试测试脚本。调试过程中可以逐步进行或调整执行的速度,并且可以在底部浏览日志出错信息。录制的测试脚本可以以多种语言导出,比如java,C#,Python,Ruby等,方便掌握不同语言的测试人员操作。Webdriver

      Selenium RC 在浏览器中运行 JavaScript 应用,会存在环境沙箱问题,而WebDriver可以跳出JavaScript的沙箱,针对不同的浏览器创建更健壮的,分布式的,跨平台的自动化测试脚本。基于特定语言(Java,C#,Python,Ruby,Perl,JavaScript等)绑定来驱动浏览器对Web元素进行操作和验证。

      webdriver的工作原理:

      • 启动浏览器后,selenium-webdriver会将目标浏览器绑定到特定的端口,启动后的浏览器则作为webdriver的remote server。

      • 客户端(也就是测试脚本),借助ComandExecutor发送HTTP请求给sever端(通信协议:The WebDriver Wire Protocol,在HTTP request的body中,会以WebDriver Wire协议规定的JSON格式的字符串来告诉Selenium我们希望浏览器接下来做什么事情)。

      • Sever端需要依赖原生的浏览器组件,转化Web Service的命令为浏览器native的调用来完成操作。

      selenium Grid

      selenium Grid是一个服务器,提供对浏览器实例访问的服务器列表,管理各个节点的注册和状态信息。可以实现在同一时刻不同服务器上执行不同的测试脚本。

      3 selenium IDE 录制脚本

      打开Edge-插件-选择selenium IDE:

      创建一个新项目,此时左部 Test Case 窗口会有一个Untitled 的测试案例,右键点击重命名为”test”

      如何使用Python的Selenium实现自动化测试?

      点击 IDE 的右上部录制按钮(小红点)开始手动录制

      在地址栏中输入待测试的网址如http://www.baidu.com,搜索关键词,这时可以看到IDE进行了录制操作。

      在页面中点击右键,可以增加检查点。

      录制结束后,点击录制按钮(小红点),结束本次手动录制。在selenium IDE 中,选中一个 Test Case,右击选择“Export 导出为test.py文件。

      将该脚本在python中运行并调试。

      # Generated by Selenium IDE
      import pytest
      import time
      import json
      from selenium import webdriver
      from selenium.webdriver.common.by import By
      from selenium.webdriver.common.action_chains import ActionChains
      from selenium.webdriver.support import expected_conditions
      from selenium.webdriver.support.wait import WebDriverWait
      from selenium.webdriver.common.keys import Keys
      from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
      class TestTest():
        def setup_method(self, method):
          self.driver = webdriver.Chrome()
          self.vars = {}
        def teardown_method(self, method):
          self.driver.quit()
        def test_test(self):
          self.driver.get("https://www.baidu.com/")
          self.driver.set_window_size(809, 864)
          self.driver.find_element(By.ID, "kw").click()
          self.driver.execute_script("window.scrollTo(0,0)")
          self.driver.find_element(By.ID, "kw").send_keys("四月是你的谎言")
          self.driver.find_element(By.ID, "su").click()
      本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
      作者最新文章
      编程开发 Python Selenium
      相关文章 更多
      python删除一个列表里的重复元素的方法与代码示例
      python删除一个列表里的重复元素的方法与代码示例

      学习如何使用Python高效删除列表中的重复元素。本文提供5种常见方法的代码示例,涵盖保持顺序与不保持顺序的场景,适合初学者和进阶开发者参考。

      Python写接口的步骤及完整代码示例
      Python写接口的步骤及完整代码示例

      详细讲解使用Python编写Web接口的核心步骤与完整代码示例,涵盖环境准备、路由定义、数据校验、服务启动及调试测试方法。

      codex怎么读取word文档及docx文件操作教程
      codex怎么读取word文档及docx文件操作教程

      介绍如何利用编程工具读取和解析Word文档(docx格式),涵盖基础文本提取代码示例、结构化数据处理逻辑,以及处理复杂排版时的技术局限与替代方案。

      怎么在Python中调用C语言代码提升性能
      怎么在Python中调用C语言代码提升性能

      详细讲解在Python中调用C语言代码提升性能的完整实践指南,包含原理分析、编译步骤、ctypes与CFFI具体实现、性能对比及常见陷阱。

      Python与C语言的性能差异及底层原理
      Python与C语言的性能差异及底层原理

      深入解析Python与C语言在执行效率上的数量级差异,从编译机制、变量内存布局、动态类型推断到GIL锁,系统阐明底层核心原理。

      Python和C语言哪个更适合编程入门
      Python和C语言哪个更适合编程入门

      客观对比Python与C语言在心智负担、底层机制与学习反馈上的核心差异,提供清晰有据的选择标准与切实的入门学习路径。

      selenium上传文件教程本地文件路径设置方法
      selenium上传文件教程本地文件路径设置方法

      深入解析Selenium处理文件上传的技术细节,涵盖标准HTML控件的路径直接注入法与非标准控件的系统级模拟方案,提供Windows与Linux环境下的路径设置最佳实践及常见异常排查。

      大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景
      大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景

      针对大数据工程场景,系统对比Java、Scala与Python在执行性能、生态结合、开发效率和维护成本上的核心差异,给出清晰的架构选型依据与落地方案。

      langgraph python guide中文入门教程详解
      langgraph python guide中文入门教程详解

      本篇LangGraph Python中文入门教程详解,系统梳理StateGraph状态机定义、节点编写、边与条件路由、检查点持久化(MemorySaver)等核心机制,提供从环境安装到完整循环智能体构建的代码示例与实操指导。

      Windows 安装 Python:从官方入口到虚拟环境的可复现实践
      Windows 安装 Python:从官方入口到虚拟环境的可复现实践

      面向后端开发者,基于 Python 官方文档说明如何在 Windows 上安装 Python、创建 venv 虚拟环境及使用 pip 管理依赖。包含可复制命令、验证方法及工具选择边界,避免常见配置误区。

      查看更多
      精品专题 更多
      装机必备
      装机必备

      正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

      Windows
      Windows

      正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

      PDF教程
      PDF教程

      正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

      Mac软件 更多
      讯飞智作 网页版
      讯飞智作 网页版
      Windows/ macOS/ Linux

      讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

      火山引擎 网页版
      火山引擎 网页版
      Windows/ macOS/ Linux

      火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

      Aperty macOS版
      Aperty macOS版
      macOS

      Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

      WINDOWS 更多
      讯飞智作 网页版
      讯飞智作 网页版
      Windows/ macOS/ Linux

      讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

      火山引擎 网页版
      火山引擎 网页版
      Windows/ macOS/ Linux

      火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

      PixTV 网页版
      PixTV 网页版
      Windows

      PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。