提高自动化测试效率 , WEB自动化框架的基础封装模块!

news2024/12/23 16:42:40

目录

前言

一、环境搭建

1. Python环境

2. Selenium安装

3. Chrome浏览器

二、基础封装模块介绍

1. 代码框架介绍

2. 使用示例

三、总结


前言

在软件测试中,WEB自动化测试已成为不可或缺的一部分。WEB自动化测试涉及到大量的代码编写,为了提高代码的重复利用率,降低代码复杂度,我们需要封装一套可重用的WEB自动化框架。本文将介绍WEB自动化框架封装的基础封装模块。

一、环境搭建

1. Python环境

要搭建 WEB自动化测试环境,首先需要安装Python。

2. Selenium安装

Selenium是一套WEB自动化测试的工具,能够支持多种浏览器。Selenium还有一系列的API接口来实现模拟鼠标和键盘操作,实现页面元素的定位和操作等。

通过Python的pip来安装Selenium,命令如下:

pip install selenium

3. Chrome浏览器

Selenium支持多种浏览器,其中Chrome浏览器使用最为广泛。需要安装Chrome浏览器和对应的驱动程序,以便Selenium能够调用Chrome浏览器进行测试。

可通过以下网址下载Chrome浏览器:

https://www.google.com/chrome/

同时还需要下载对应版本的Chrome驱动程序,可通过以下网址下载:

http://chromedriver.storage.googleapis.com/index.html

下载完驱动程序后,将驱动程序文件复制到Python环境中的Scripts目录中即可。

二、基础封装模块介绍

1. 代码框架介绍

基础封装模块主要分为两个部分:

第一部分是启动浏览器和页面的初始化,包括封装好的浏览器驱动初始化、所要访问的页面的URL初始化和访问页面的方法等;

第二部分是页面元素操作,包括封装了页面元素定位方法、元素操作方法(例如输入框输入文字、按钮点击等)、获取元素信息(例如获取元素的文本值、获取元素属性值等)。

基础封装模块是WEB自动化框架的核心部分,具体代码实现如下:

from selenium import webdriver


class BasePage:
    # 封装浏览器初始化和页面URL初始化
    def __init__(self, url):
        self.driver = webdriver.Chrome()
        self.driver.get(url)
        self.driver.maximize_window()

    # 封装访问页面的方法
    def open(self, url):
        self.driver.get(url)

    # 封装页面元素定位方法
    def locator_element(self, locator_type, locator_value):
        if locator_type == "id":
            element = self.driver.find_element_by_id(locator_value)
        elif locator_type == "name":
            element = self.driver.find_element_by_name(locator_value)
        elif locator_type == "class":
            element = self.driver.find_element_by_class_name(locator_value)
        elif locator_type == "xpath":
            element = self.driver.find_element_by_xpath(locator_value)
        elif locator_type == "link_text":
            element = self.driver.find_element_by_link_text(locator_value)
        else:
            element = None
        return element

    # 封装输入框输入文字方法
    def input_text(self, locator_type, locator_value, text):
        element = self.locator_element(locator_type, locator_value)
        if element is not None:
            element.clear()
            element.send_keys(text)

    # 封装按钮点击方法
    def click_button(self, locator_type, locator_value):
        element = self.locator_element(locator_type, locator_value)
        if element is not None:
            element.click()

    # 封装获取元素文本值方法
    def get_element_text(self, locator_type, locator_value):
        element = self.locator_element(locator_type, locator_value)
        if element is not None:
            return element.text

    # 封装获取元素属性值方法
    def get_element_attribute(self, locator_type, locator_value,attribute_name):
    element = self.locator_element(locator_type, locator_value)
    if element is not None:
        return element.get_attribute(attribute_name)

    # 封装关闭浏览器方法
    def close(self):
        self.driver.quit()

2. 使用示例

下面通过一个简单的Demo来介绍如何使用基础封装模块:

from BasePage import BasePage

# 打开页面
base_page = BasePage("http://example.com")

# 获取文本输入框,并输入文字
base_page.input_text("id", "text_box", "This is a test.")

# 点击“提交”按钮
base_page.click_button("id", "submit_btn")

# 获取提交后的提示文本
text = base_page.get_element_text("id", "result")
print(text)

# 关闭浏览器
base_page.close()

通过以上代码示例,可以看到使用基础封装模块可以实现一些简单的WEB自动化测试操作。在实际使用中,可以将该模块进行封装和拓展,以满足具体项目的需求。

三、总结

本文主要介绍了WEB自动化框架封装的基础封装模块。基础封装模块是WEB自动化框架的核心部分,通过封装常用的页面元素操作方法,可以提高代码的复用性,降低代码复杂度。基础封装模块还可以作为WEB自动化测试框架的基础,为后续的功能拓展提供支持。

 作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些自动化测试前进之路的必须品,希望能对你带来帮助。(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等),相信能使你更好的进步!

留【自动化测试】即【自动化测试交流】:574737577(备注ccc)icon-default.png?t=N4P3http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=46FPXwITnxDxmv0ov2QebrZmF5SyN4iM&authKey=HPgSIg8vrQ0cjTChiHurglYUzLxWB48E441Y3HR2JEvhjV7QR0wbDE8YuEkbpJmr&noverify=0&group_code=574737577

 

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

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

相关文章

SUSTechPOINTS三维点云标注工具使用

官方地址:SUSTechPOINTS 官方中文教程 相关文章: OpenPCDet安装、使用方式及自定义数据集训练 安装 git clone https://github.com/naurril/SUSTechPOINTS cd SUSTechPOINTS pip install -r requirement.txt wget https://github.com/naurril/SUSTec…

【全栈开发】基于Spring BootVueAndroid扫码授权登录

文章目录 一、引言二、设计1、移动端(Android)(1)库(2)依赖(3)使用 2、前端(Vue)(1)库(2)使用 3、后端&#x…

Home Assistant-开源智能家居系统

Home Assistant(以下简称HA) 它是个开源的智能家居平台,一个系统平台软件,像TB 1.它把家中的智能家居设备整合到HA中,它能够接入的设备非常的多比如小米、博联、易微联、飞利浦、特斯拉…,也可以接入软件&…

Python远程连接Ubuntu20.4下的Mariadb数据库进行操作

文章目录 前言一、ubuntu20.4安装mariadb10.51、更换数据源2、安装mariadb3、设置密码4、设置管理用户5、设置远程登录6、修改端口 二、mariadb10.5建库建表创建数据库2.建表 三、Python代码及环境准备1、Python2、环境 四、总结五、参考资料 前言 环境: 1、Ubuntu2…

Chromium浏览器渗透测试工具EvilSelenium简单入门

EvilSelenium是一款基于Selenium的渗透测试工具,该工具基于武器化的Selenium实现其功能,可以帮助广大研究人员针对基于Chromium的浏览器进行安全分析和渗透测试。 功能介绍 1、通过autofill获取存储的凭证信息; 2、获取Cookie数据&#xf…

高考答题卡怎么被机器识别?基于OpenCV答题卡识别模拟-米尔ARM+FPGA异构开发板

本篇测评由优秀测评者“筑梦者与梦同行”提供。 01. 前言MYD-JX8MMA7SDK发布说明 根据下图文件内容可以知道myir-image-full系统支持的功能,其支持OpenCV,也就不用在格外安装相关驱动包等,省了很多事情。 02. MYD-JX8MMA7软件评估指南 本文…

Java中Object类常用的11个方法

Java中Object类常用的11个方法 先看下 Object 的类结构&#xff08;快捷键&#xff1a;alt7&#xff09;&#xff1a; 1. getClass 方法&#xff08;获取类的class对象。&#xff09; public final native Class<?> getClass();final 方法、获取对象的运行时 class …

学生成绩管理系统(PowerDesigner+MyEclipse+SQL Server)

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;69学生 获取完整源码源文件论文报告数据库表等 系统中用户共有管理员、教师和学生三种&#xff0c;分别对应不同的权限。 管理员 &#xff08;1&#xff09;院系的开设&#xff1b; &#xff08;2&#xff09;教师基本信息…

VScode的插件和.json文件和快捷键

文章目录 1. 插件了解插件的配置的修改Remote DevelopmentFilter LineC/C 和 C intellisense&#xff08;弃用&#xff09;cpp-check-lint 2. VScode中的.json文件2.1 tasks.jsontasks.json文件的格式tasks.json文件中任务的配置arg参数选择 案例&#xff1a; 2.2 lauch.json参…

数字逻辑复习重点总结

文章目录 前言第一章第二章第三章第四章第五章第六章第七章&#xff1a;第八章总结 前言 因为要期末考试了所以就将知识点进行了总结&#xff0c;把期末要考的知识点分章节进行划分&#xff0c;以至于我能取得一个好成绩。 第一章 进制转换 8421码、2421码、余3码、格雷码&am…

Creating Serial Numbers (C#)

此示例展示如何使用Visual C#编写的Add-ins为文件数据卡生成序列号。 注意事项&#xff1a; SOLIDWORKS PDM Professional无法强制重新加载用.NET编写的Add-ins&#xff0c;必须重新启动所有客户端计算机&#xff0c;以确保使用Add-ins的最新版本。 SOLIDWORKS PDM Professio…

购买一套WMS仓储管理系统要多少钱

随着电商行业的快速发展&#xff0c;仓储物流行业也逐渐成为了人们关注的焦点。WMS仓储管理系统作为物流管理领域的重要工具&#xff0c;在提高仓库管理效率、降低运营成本方面具有重要作用。那么&#xff0c;购买一套WMS仓储管理系统要多少钱呢&#xff1f; 首先&#xff0c;我…

Vue开发实战(03)-组件化开发

对组件功能的封装&#xff0c;可以像搭积木一样开发网页。 Vue官方的示例图对组件化开发的形象展示。左边是一个网页&#xff0c;可以按照功能模块抽象成很多组件&#xff0c;这些组件就像积木一样拼接成网页。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直…

Lecture 21 Summarisation

目录 Extractive: Single-DocExtractive: Multi-DocAbstractive: Single-DocEvaluationConclusion summarisation Distill the most important information from a text to produce shortened or abridged versionExamples outlines of a documentabstracts of a scientific ar…

MapReduce【小文件的优化-Sequence文件】

在实际开发中&#xff0c;我们肯定希望提高MapReduce的工作效率&#xff0c;其实提高MapReduce的效率&#xff0c;无非就是提高Map阶段和Reduce阶段的效率。 Map阶段优化之小文件问题 我们知道Map阶段中的MapTask个数是与InputSplit的个数有关的&#xff0c;一般一个InputSpl…

《微服务实战》 第二十八章 分布式锁框架-Redisson

前言 Redisson 在基于 NIO 的 Netty 框架上&#xff0c;充分的利⽤了 Redis 键值数据库提供的⼀系列优势&#xff0c;在Java 实⽤⼯具包中常⽤接⼝的基础上&#xff0c;为使⽤者提供了⼀系列具有分布式特性的常⽤⼯具类。使得原本作为协调单机多线程并发程序的⼯具包获得了协调…

VR全景营销颠覆传统营销模式,让商企博“出圈”

在激烈的市场竞争中&#xff0c;营销成为了商企博“出圈”的重要课题&#xff0c;随着5G的到来&#xff0c;VR全景迈入了快速发展时期&#xff0c;随着VR全景的普及应用&#xff0c;商业领域也逐渐引入了VR全景营销。 时下&#xff0c;商企的营销是越发困难&#xff0c;传统的营…

币圈下半年重点之一:以太坊坎昆升级,将带来哪些实质性利好?

近期BRC-20大火&#xff0c;主打价值存储的比特币竟然生态比以太坊还热&#xff0c;但要论生态&#xff0c;以太坊才是真正的王者&#xff0c;因为其正在悄悄酝酿下一个重大升级——坎昆&#xff08;Dencun&#xff09;升级。 最新消息&#xff0c;以太坊开发者已经就Dencun升级…

【MySQL高级篇笔记-数据库的设计规范(中) 】

此笔记为尚硅谷MySQL高级篇部分内容 目录 一、为什么要数据库设计 二、范式 1、范式简介 2、范式都包括哪些 3、键和相关属性的概念 4、第一范式(1st NF) 5、第二范式(2nd NF) 6、第三范式(3rd NF) 7、小结 三、反范式化 1、概述 2、 应用举例 3、反范式的新问…

逆向分析高薪就业:学习Android逆向开发,拥抱行业机会!

简述 Android 逆向开发是指利用各种技术手段对安卓应用程序进行逆向分析和研究&#xff0c;以了解应用程序的内部机制&#xff0c;发现应用程序中的漏洞、脆弱性或者安全问题&#xff0c;并提供相关的解决方案。逆向开发技术可以帮助开发人员更好地了解应用程序的构成、运行机…