最佳实践,高效编写Web自动化测试强制交互方法封装技巧

news2024/11/27 22:42:02

目录

 前言:

一、Web自动化测试的基本原理

二、封装强制交互方法

1、输入框强制交互

2、其他强制交互

三、封装基础类方法

四、总结


 前言:

Web自动化测试是现代软件开发中必不可少的部分。Web自动化测试可以帮助测试人员快速地验证页面功能并发现潜在的问题。然而,在实际测试过程中,有时候我们需要经过一些强制交互才能进入到目标页面。例如,我们需要在登录页面输入用户名和密码,才能进入系统中进行测试。在这种情况下,如何优雅地封装强制交互方法,是Web自动化测试中的一项重要任务。

本文将介绍如何使用Python语言封装Web自动化框架中的强制交互方法。

一、Web自动化测试的基本原理

Web自动化测试的基本原理是通过模拟用户在浏览器中的操作,来对Web应用程序进行自动化的测试。Web自动化测试常用的方式是通过Selenium的WebDriver驱动来模拟用户在浏览器中的操作。Selenium的WebDriver提供了一套API,可以用来进行解析HTML元素、模拟用户键盘鼠标输入、页面跳转操作等。

二、封装强制交互方法

在Web自动化测试中,我们经常需要在目标页面中完成一些强制交互,例如输入验证码、填写登录信息、处理弹窗等等。这些强制交互可能会打断我们的自动化测试流程,因此需要我们对其进行封装。本文将介绍如何封装一个通用的输入框强制交互方法,以供Web自动化测试中使用。

1、输入框强制交互

在Web页面中,输入框强制交互是非常常见的一种交互方式。我们需要输入验证码、用户名、密码等等信息,才能继续进行下一步操作。在自动化测试中,我们需要模拟这些输入框的输入过程。下面是一个示例代码:

def input_box_interaction(driver, element_selector, input_text):
    """
    输入框强制交互方法
    :param driver: WebDriver对象
    :param element_selector: 元素选择器
    :param input_text: 输入框中需要输入的文本
    """
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, element_selector))
    )
    element.clear()
    element.send_keys("{}".format(input_text))

上面的代码中,我们定义了一个`input_box_interaction`方法来实现输入框强制交互。这个方法接受三个参数:`driver`表示WebDriver对象,`element_selector`表示目标元素的选择器,`input_text`表示输入框中需要输入的文本。在方法内部,我们使用`WebDriverWait`方法来等待目标元素加载完成。等待完成后,我们首先使用`element.clear()`方法来清空输入框中的内容,然后使用`element.send_keys()`方法来模拟输入操作。

使用这个方法,我们可以在Web自动化测试中快速完成输入框的强制交互操作,提高测试效率。

2、其他强制交互

除了输入框强制交互,Web自动化测试中还有许多其他的强制交互,例如处理弹窗、滑动验证码、等待页面加载等等。针对不同的强制交互,我们需要编写不同的方法来进行封装。下面是一个处理弹窗的示例代码:

def alert_interaction(driver, confirm=True):
    """
    处理弹窗方法
    :param driver: WebDriver对象
    :param confirm: True表示点击确认按钮,False表示点击取消按钮
    """
    alert = WebDriverWait(driver, 10).until(EC.alert_is_present())
    if confirm:
        alert.accept()
    else:
        alert.dismiss()

上面的代码中,我们定义了一个`alert_interaction`方法来实现处理弹窗。这个方法接受两个参数:`driver`表示WebDriver对象,`confirm`表示是否点击确认按钮。在方法内部,我们使用`WebDriverWait`方法来等待弹窗出现,然后使用`alert.accept()`或`alert.dismiss()`方法来点击确认或取消按钮。

通过这样的封装,我们可以在Web自动化测试中快速完成弹窗处理操作,提高测试效率。

三、封装基础类方法

在Web自动化测试中,我们需要编写很多类似的方法,例如获取元素、验证元素是否存在、等待页面加载等等。这些方法可以封装到基础类中,在测试脚本中继承基础类,以方便地重用这些方法。下面是一个基础类的示例代码:

class BasePage(object):
    def __init__(self, driver):
        self.driver = driver

    def get_element(self, element_selector):
        """
        获取单个元素
        :param element_selector: 元素选择器
        :return: 返回WebElement对象
        """
        element = WebDriverWait(self.driver, 10).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, element_selector))
        )
        return element

    def get_elements(self, element_selector):
        """
        获取多个元素
        :param element_selector: 元素选择器
        :return: 返回WebElement对象列表
        """
        elements = WebDriverWait(self.driver, 10).until(
            EC.presence_of_all_elements_located((By.CSS_SELECTOR, element_selector))
        )
        return elements

    def is_element_exist(self, element_selector):
        """
        判断元素是否存在
        :param element_selector: 元素选择器
        :return: True或False
        """
        try:
            self.get_element(element_selector)
            return True
        except TimeoutException:
            return False

    def wait_for_page_load(self):
        """
        等待页面加载完成
        """
        WebDriverWait(self.driver, 10).until(
            lambda driver: driver.execute_script('return document.readyState') == 'complete'
        )

在上面的代码中,我们定义了一个基础类`BasePage`,它包含了获取单个元素、获取多个元素、判断元素是否存在、等待页面加载等基础类方法。例如`get_element`方法用来获取单个元素,`get_elements`用于获取多个元素,`is_element_exist`用于判断元素是否存在,`wait_for_page_load`用于等待页面加载完成。在测试脚本中,我们可以继承`BasePage`类来重用这些方法。

四、总结

本文介绍了如何使用Python语言封装Web自动化框架中的强制交互方法。我们首先介绍了Web自动化测试的基本原理和Selenium的WebDriver驱动,然后针对输入框强制交互、处理弹窗等常见的强制交互,编写了相应的封装方法。最后,我们还介绍了如何封装基础类方法,以方便测试脚本的编写。通过这样的封装,我们可以快速地完成Web自动化测试,并提高测试效率。

 作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些自动化测试的经验必需品,如果你用得到的话可以直接拿走,希望能对你带来帮助。(包括Python编程、WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、性能测试、安全测试、大厂面试真题、简历模板等等),相信能使你更好的进步!

获取方式:留【自动化测试】即可获取
【自动化测试交流】:574737577(进群备注ccc)http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=Dp4NVlFJbLm9cvGksiqeMjMqUah9R5dO&authKey=IUKh2O1tDD1pJQwar9eC6X%2BC9Fgmzyg%2FwoITLtMgqEkcmCHhr6lM8kL3o8dS6vSu&noverify=0&group_code=574737577

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

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

相关文章

Fiddler 抓包工具下载安装基本使用(详)

在做软件测试或者Bug定位的时候会用到一些抓包工具,当然抓包工具还要一些其他用途可以做一些API的抓取,那么本篇内容就来讲 Fiddler 抓包工具的下载安装以及如何来实际的应用。讲了这些可能有的读者还不知道这个"Fiddler"怎么读呢?…

详解flutter刷新流程,让你的应用更流畅

本文已授权公众号【缦图技术团队】发布 详解flutter刷新流程,让你的应用更流畅 一、概述 Flutter 是谷歌推出的高性能、跨端UI框架,可以通过一套代码,支持 iOS、Android、Windows/MAC/Linux 等多个平台,且能达到原生性能。Flutte…

pthread_getspecific和pthread_setspecific详解

写在前面 在Linux系统中使用C/C进行多线程编程时,我们遇到最多的就是对同一变量的多线程读写问题,大多情况下遇到这类问题都是通过锁机制来处理,但这对程序的性能带来了很大的影响,当然对于那些系统原生支持原子操作的数据类型来…

【CV】Yolov8:ultralytics目标检测、关键点检测、语义分割

note Yolov8提供了一个全新的 SOTA 模型,包括 P5 640 和 P6 1280 分辨率的目标检测网络和基于 YOLACT 的实例分割模型。和 YOLOv5 一样,基于缩放系数也提供了 N/S/M/L/X 尺度的不同大小模型,用于满足不同场景需求骨干网络和 Neck 部分可能参…

KVM(一)Linux部署KVM及新建虚拟机

目录 一、准备工作 1.1 防火墙、SElinux 二、安装KVM 2.1 yum源 2.2 安装工具包 2.3 安装KVM组件 2.4 查看磁盘/新建目录 2.5 安装Linux GUI可视化界面 三、KVM桌面版新建虚拟机 3.1 挂载目录 3.2 新建raw/qcow2文件 3.3 新建虚拟机 3.4 KVM命令行新建虚拟机 一、…

Linux rootfs

前言 通过《initrd&init进程》我们知道rootfs 是文件系统的根目录,其包含了操作系统所需的所有文件和目录,包括程序、库文件、配置文件、设备文件等,它是系统启动时必须加载的文件系统之一。当系统启动后,内核会首先挂载 roo…

本地Jrebel 许可服务器搭建

一、下载 下载 JrebelLicenseServer.zip 二、解压 解压后进入 bin 目录 三、服务安装|启动|停止|删除|... 安装服务:JrebelLicenseServer.bat install启动服务:JrebelLicenseServer.bat start停止服务:JrebelLicenseServer.bat stop删除服…

【Three.js】第一、二章 入门指南和基础知识

01.介绍 Three.js 非常庞大,你可以用它做无数的事情。 在第一章中,我们将学习所有基础知识,例如创建第一个场景、渲染、添加对象、选择正确的材料、添加纹理、为所有内容制作动画,甚至将其放到网上。有些人可能会觉得这部分有点…

如何轻松掌握接口测试——POST请求和COOKIE使用技巧?

目录 引言 请求方法: POST请求方法:添加资源(对服务端已存在的资源也可以做修改和删除操作) 实战练习 实战练习2 COOKIE: Status Code:协议状态码 接口文档 结语 引言 对于初学者或者没有接口测试…

[笔记]渗透测试工具Burpsuit《一》Burpsuit介绍

文章目录 前言一、安装配置1.1 环境1.2 安装过程1.3 科技过程 二、常用功能2.1 Manual penetration testing features2.2 Advanced/custom automated attacks2.3 Automated scanning for vulnerabilities2.4 Productivity tools2.5 Extensions 三、拓展功能 前言 Burp Suite(b…

设计原则-单一职责原则

在编程大环境中,评价代码组织方式质量的好坏涉及到各个方面,如代码的可读性、可维护性、可复用性、稳定性等各个方面。而在面向对象语言中也可以通过以下各个方面: 类中方法的设计类中属性的设计类(接口、抽象类、普通类)的设计类与类之间的…

IMU 积分进行航迹推算

IMU 积分进行航迹推算 Reference https://github.com/gaoxiang12/slam_in_autonomous_driving 1.0 递推方程推导 \quad 连续时间内的 IMU 运动学方程: R ˙ R ω ∧ q 1 2 q ω ˙ p ˙ v v ˙ a \dot{\mathbf{R}}\mathbf{R}\omega ^{\wedge} \\ \dot{\mathbf{…

[CTF/网络安全] 攻防世界 weak_auth 解题详析

[CTF/网络安全] 攻防世界 weak_auth 解题详析 弱认证弱认证绕过方法姿势Burp Suite 爆破 总结 题目描述:小宁写了一个登陆验证页面,随手就设了一个密码。 弱认证 weak_auth翻译:弱认证 这个术语通常用来描述一种较弱的安全认证方法或机制&am…

HTML语法、常用标签、表单,CSS选择器。简单登录页面的实现

HTML和CSS粗略介绍 文章目录 HTML和CSS粗略介绍HTML页面第一个HTML页面添加图片和视频 HTML语法规范div标签span标签转义字符 HTML常用标签换行和分割线标题超链接列表元素表格 HTML表单输入框和按钮多行文本 CSS样式CSS选择器input标签选择器id选择器类选择器 组合选择器和优先…

【HackTheBox Bagel】打靶记录

一、namp扫描到5000 8000 22 端口 二、访问8000端口,看到跳转到域名bagel.htb,加入到hosts 看到该url 像文件包含,尝试fuzz一波 尝试找公私钥均未果,找到了cmdline 进一步对其包含 HTTP/1.1 200 OK Server: Werkzeug/2.2.2 …

Java多线程异常处理

文章目录 一. 线程中出现异常的处理1. 线程出现异常的默认行为2. setUncaoughtExceptionHandler()方法处理异常3. setDefaultUncaoughtExceptionHandler()方法进行异常处理 二. 线程组内出现异常 一. 线程中出现异常的处理 1. 线程出现异常的默认行为 当单线程中初出现异常时…

工业缺陷检测数据及代码(附代码)

介绍 目前,基于机器视觉的表面缺陷检测设备已广泛取代人工视觉检测,在包括3C、汽车、家电、机械制造、半导体与电子、化工、制药、航空航天、轻工等多个行业领域得到应用。传统的基于机器视觉的表面缺陷检测方法通常采用常规图像处理算法或人工设计的特征加分类器。一般而言…

【Tomcat下载及使用说明】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 1.什么是Tomcat 2.Tomcat下载流程及注意问题 …

Eclipse将代码收缩if/for/try,支持自定义区域收缩

Hi, I’m Shendi Eclipse将代码收缩if/for/try,支持自定义区域收缩 最近忙于给网站增加功能,在使用 Eclipse 编写 Java 代码时发现一个函数内代码过多,并且 if,for,try这种代码块无法收缩(在IDEA&#xff0…

【快速入门-简单实现】使用Java实现的单播、组播和广播

说明 TCP是一个面向连接的协议,TCP一定是点对点的,一点是两个主机来建立连接的,基于TCP实现的肯定是单播(但单播还可以使用UDP协议实现)。只有UDP才会使用广播和组播。 Java中的单播、组播和广播可以使用TCP或UDP协议来实现,具体取决于应用程…