Web 自动化测试案例(入门级)——关闭某视频网站弹出广告以及打开登录框输入内容

news2024/12/24 20:55:27

文章目录

  • 📋前言
  • 🎯自动化测试
    • 🧩环境的搭建
  • 🎯案例介绍
  • 📝最后


在这里插入图片描述

📋前言

人生苦短,我用Python。许久没写博客了,今天又是久违的参与话题的讨论,话题的内容是:如何入门 Python 的? 这个话题对于我来说有点小尴尬,因为我没有系统的学习过 Python 这门语言,只不过在写些算法题、小demo接触过,还有就是帮朋友搞大数据作业时(爬取数据、分析数据什么的),但是我之前参加软件测试比赛时接触过 Web 自动化测试 ,里面的代码涉及到了 Python 。因此这篇文章我来介绍一个简单入门级的 Web 自动化测试 案例。(说到这突然想起来之前还用 Python 大规模修改图片文件的后缀,还有 Web hook 的一些操作)
在这里插入图片描述
下面附上一张我在软件测试比赛中 Web 自动化测试 内容的题目。
在这里插入图片描述


🎯自动化测试

Web 自动化测试 是一种自动化测试方法,它主要是通过模拟用户的行为来对 Web 应用进行测试。在 Web 自动化测试 中,我们可以使用自动化测试工具和框架来编写自动化测试脚本,自动执行测试过程,并生成测试报告。

在进行 Web 自动化测试 时,需要注意以下几个方面:

  • 测试环境的搭建;
  • 自动化测试脚本的编写和维护;
  • 测试数据的管理;
  • 测试用例的设计和执行;
  • 测试报告的生成和分析。

在这里插入图片描述

🧩环境的搭建

上面说到测试环境的搭建,因此接下我们详细讲讲本次案例所要用到的测试环境。

1️⃣Python
本次案例必不可少的开发环境!!!

💻安装步骤:
官方下载地址:https://www.python.org/downloads/

看图片步骤(旧图)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
cmd测一下是否安装成功,出现版本信息则安装成功。
在这里插入图片描述


2️⃣Selenium
Selenium 是一个用于 Web 应用程序测试的工具。Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样。

💻安装步骤:
通过cmd安装,或者通过 PyCharm 软件的设置安装。

cmd安装(旧图)。

pip install selenium==3.141.0

在这里插入图片描述
cmd测一下是否安装成功,出现版本信息则安装成功。

pip show selenium

在这里插入图片描述


通过 PyCharm 软件的设置安装。
打开设置。
在这里插入图片描述
找到项目 => Python解释器 => 点击 + 号安装。
在这里插入图片描述
选择版本安装即可。
在这里插入图片描述


3️⃣PyCharm
PyCharm是一种Python IDE(Integrated Development Environment,集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试、版本控制。

💻安装步骤:
官方下载地址:https://www.jetbrains.com/pycharm/

看图片步骤(旧图)。
在这里插入图片描述
在这里插入图片描述


4️⃣Chrome Driver
PyCharm是一种Python IDE(Integrated Development Environment,集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试、版本控制。

💻安装步骤:
官方下载地址:https://chromedriver.chromium.org/downloads

首先打开谷歌浏览器,查看其版本。(查看的步骤如下图)
在这里插入图片描述
然后根据下图步骤操作。
在这里插入图片描述


🎯案例介绍

这是一个使用 PythonSelenium 进行自动化测试的例子,代码主要实现了以下几个功能:

  • 打开某视频网站。
  • 关闭网页上的广告。
  • 窗口最大化。
  • 点击登录按钮进行登录操作。
  • 在登录窗口中选择密码登录,并输入手机号和密码。
  • 点击登录按钮进行登录。

示例代码:

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 定义 CSS Selector 和 XPATH 值
URL = "https://www.xxx.com/"
ADS_CLOSE_BTN = "body > div.header__ele > div:nth-child(3) > div.header__promotion__popup > img"
LOGIN_BTN = "/html/body/div[1]/div/div/div[1]/div[4]/header/div/div/div[3]/div[8]/div/div[1]/div[1]/div/span"
USERNAME_INPUT = "username"
PASSWORD_INPUT = "password"
LOGIN_METHOD = "body > div:nth-child(16) > div > div.qy-login-container > div.qy-login-container-right > div.qy-login-main > div > div > div > div:nth-child(2) > div.qy-login-methods > div:nth-child(3)"
LOGIN_BTN_SUBMIT = "body > div:nth-child(16) > div > div.qy-login-container > div.qy-login-container-right > div.qy-login-main > div > div > div > div:nth-child(1) > div.qy-login-field > div.qy-login-btn > div > div"

# 创建 Chrome 浏览器实例
driver = webdriver.Chrome()

# 打开爱奇艺网站
driver.get(URL)

# 关闭广告
close_btn = driver.find_element(By.CSS_SELECTOR, ADS_CLOSE_BTN)
close_btn.click()

# 窗口最大化
driver.maximize_window()

# 点击登录按钮
login_btn = driver.find_element(By.XPATH, LOGIN_BTN)
login_btn.click()

# 选择密码登录
wait = WebDriverWait(driver, 10)
login_method = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, LOGIN_METHOD)))
login_method.click()

# 输入用户名和密码
username_input = driver.find_element(By.NAME, USERNAME_INPUT)
username_input.send_keys("15588886666")

password_input = driver.find_element(By.NAME, PASSWORD_INPUT)
password_input.send_keys("123")

# 点击登录按钮
login_submit_btn = driver.find_element(By.CSS_SELECTOR, LOGIN_BTN_SUBMIT)
login_submit_btn.click()

# 关闭浏览器
time.sleep(3)
driver.quit()

这段代码优化了以下几个地方:
使用隐式等待或显示等待来代替 time.sleep() 方法,以提高代码的健壮性和性能。例如可以使用 driver.implicitly_wait(10) 来设置隐式等待时间,在此期间 Selenium 会等待页面元素出现,如果在超时时间内元素没有出现,则抛出 NoSuchElementException 异常。

使用 find_elements() 方法代替 find_element() 方法。find_element() 方法会返回页面上第一个符合条件的元素,如果元素不存在则抛出 NoSuchElementException 异常。而 find_elements() 返回的是页面上所有符合条件的元素,这样可以避免因为页面结构变化导致无法找到指定元素的问题。

可以将一些重复的 CSS SelectorXPATH 值定义为变量,以便后续代码的维护和扩展。


📝最后

Python 是一种高级、解释型、面向对象的编程语言,具有简单易懂、易维护、可扩展性强和极高的开发效率等特点。由于其广泛应用于数据科学、机器学习、人工智能等领域,因此也被称为“最适合初学者的编程语言”。

随着人工智能技术的不断发展,Python 的使用范围也越来越广泛,例如在数据处理、计算机视觉、自然语言处理、智能控制等领域都有广泛的应用。由于 Python 具备良好的生态环境和社区支持,以及越来越多的第三方库和工具的加入,使得Python成为了一个拥有无限可能的编程语言。

最后想说的是:人生苦短,我用Python。
在这里插入图片描述

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

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

相关文章

基于springboot注解的shiro 授权及角色认证

目录 授权 后端接口服务注解 授权验证-没有角色无法访问 授权验证-获取角色进行验证 授权验证-获取权限进行验证 授权验证-异常处理 授权 用户登录后,需要验证是否具有指定角色指定权限。Shiro也提供了方便的工具进行判 断。 这个工具就是Realm的doGetAuthor…

华为OD机试真题B卷 Java 实现【狼羊过河】,附详细解题思路

一、题目描述 一农夫带着m只羊,n只狼过河,农夫有一条可载x只狼/羊的船;农夫在时或者羊的数量大于狼时,狼不会攻击羊; 农夫在不损失羊的情况下,运输几次可以完成运输? 返程不计入次数。 二、…

K8s容器运行环境安全加固

K8s容器运行环境安全加固 目录 文章目录 K8s容器运行环境安全加固目录1、最小特权原则(POLP)2、AppArmor限制容器对资源访问3、Seccomp 限制容器进程系统调用关于我最后 1、最小特权原则(POLP) **最小特权原则 (Principle of lea…

graalvm把java编译为c/c++能够使用的动态库(dll/so)

graalvm把java编译为c/c能够使用的动态库(dll/so) 1.安装graalvm oracle官方企业版 github的openjdk版本 1.1 下载对应系统版本,配置环境变量 本人环境 1. win10 openjdk 17.0.5 2022-10-18 OpenJDK Runtime Environment GraalVM CE 22.3.0 (build 17.0.58-jv…

chatgpt赋能python:Python中的None值如何去掉?

Python中的None值如何去掉? Python是一种具有高度灵活性和可读性的编程语言,它有许多强大的功能,令许多开发人员喜欢使用它。然而,可能会遇到延迟或者None值的情况,这时需要我们找到正确的方法去除它们。 None值是什…

C#,码海拾贝(27)——求解“对称方程组”的“分解法”之C#源代码,《C#数值计算算法编程》源代码升级改进版

using System; namespace Zhou.CSharp.Algorithm { /// <summary> /// 求解线性方程组的类 LEquations /// 原作 周长发 /// 改编 深度混淆 /// </summary> public static partial class LEquations { /// <summary> /…

happens-before规则

happens-before背景由来 happens-before的概念最初由Leslie Lamport在其一篇影响深远的论文&#xff08;《Time&#xff0c;Clocks and the Ordering of Events in a Distributed System》&#xff09;中提出。Leslie Lamport使用 happens-before 来定义分布式系统中事件之间…

【利用AI让知识体系化】7种结构型模式

文章目录 结构型模式简介适配器模式装饰器模式代理模式外观模式桥接模式组合模式享元模式 结构型模式 简介 在设计模式中&#xff0c;结构型模式用于描述如何将对象和类组装成较大的结构&#xff0c;并灵活地处理对象之间的关系。 结构型模式包括以下几种&#xff1a; 适配器…

驱动开发——嵌入式(驱动)软开基础(十)

1. 64位的计算机有哪些优点&#xff1f; &#xff08;1&#xff09;可以进行更大范围的整数计算。 &#xff08;2&#xff09;可以支持更大的内存&#xff0c;虚拟内存空间大小一般为2^48&#xff08;256TB&#xff09;。64位的Linux一般使用48位表示虚拟内存空间地址&#x…

esp8266 OTA远程无线升级

第一步、编译生成.bin升级固件 本教程需要用到 arduino IDE的esp8266开发环境,关于arduino IDE 的ESP8266环境配置可参考:环境配置: 点击跳转 如果已安装好esp8266 开发环境,继续: 使用arduino IDE软件,打开随便一个需要升级的程序,点击「项目」-「导出已编译的二进制…

【Bug 全解决】 Java、Spring boot 后端项目 Bug 总结

Bug 收集与总结 本文记录的是 SpringBoot 后端项目使用和运行代码时所遇到的各种问题&#xff0c;全部都已解决&#xff0c;欢迎在评论区补充你遇到的 Bug 哦&#xff01;仅以本文记录学习社区项目时&#xff0c;所遇到的奇奇怪怪的 bug&#xff0c;以及一些很愚蠢的错误&…

Golang每日一练(leetDay0080) 矩形面积、翻转二叉树

目录 223. 矩形面积 Rectangle Area &#x1f31f;&#x1f31f; 226. 翻转二叉树 Invert Binary Tree &#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏…

RPC原理与实现

rpc叫做远程过程调用&#xff0c;是指一台机器上的服务通过通信协议调用网络中另一台机器上的程序&#xff0c;并拿到结果。 1、基本流程 基本流程为&#xff1a; 客户端程序通过Client Stub调度rpc函数Client Stub将调用方法、参数按照通信协议序列化成网络二进制数据&#…

koa2中HTTP错误处理

HTTP错误 访问 Web 服务器或应用程序时&#xff0c;服务器收到的每个 HTTP 请求都会以 HTTP 状态代码进行响应。 HTTP 状态代码是三位数代码&#xff0c;分为五个不同的类别。 状态代码的类别可以通过它的第一个数字快速识别&#xff1a; 1xx&#xff1a;信息2xx&#xff1a…

“大娘,你听说过ChatGPT吗?”,“你说的那个什么鸡皮蹄,我这饼里加不了!”

最近看到一个有意思的段子&#xff0c;大概意思是&#xff1a; 年轻人去买煎饼&#xff0c;问摊煎饼的大娘知不知道什么是ChatGPT。 大娘摇了摇头&#xff1a;“你说的那个什么鸡皮蹄&#xff0c;我这饼里加不了”。 年轻人尝试跟大娘解释ChatGPT是什么东西&#xff0c;大娘…

快速上手kettle(二)小试牛刀

快速上手kettle二 小试牛刀 一 、前言二 、两个小目标三、 kettle核心概念介绍3.1 转换3.1.1 步骤(Step)3.1.2 跳&#xff08;Hop&#xff09;3.1.3 元素据3.1.4 数据类型3.1.5 并发执行 3.2 作业 四、实践操作4.1 案例1 将csv文件转换成excel文件4.1.1 在kettle中新建一个转换…

在Node.js中接受来自命令行的输入

目录 1、简介 2、readlineSync 3、列表选择一个项目&#xff1a; 4、类似滑块范围的UI: 1、简介 如何制作一个Node.js CLI程序使用内置的readline Node.js模块进行交互 如何制作一个节点js CLI程序交互&#xff1f; Node.js 从版本7起开始提供了readline模块来执行以下操…

styleFlow数学推导

如果 w 和 z 的变换是线性的&#xff0c;即 w az b&#xff0c;那么 dw a dz&#xff0c; 所以 p(w) dw p(z) dz 等价于 p(w) a p(z) 即 w 的概率密度函数是 z 的概率密度函数乘以一个常数因子。 如果 w 和 z 是通过一个可逆的函数 ϕ 相互转换的&#xff0c;即 w ϕ(…

5.29今日黄金最新行情走势分析及多空交易策略

近期有哪些消息面影响黄金走势&#xff1f;今日黄金多空该如何研判&#xff1f; ​黄金消息面解析&#xff1a;上周五(5月26日)美市尾盘&#xff0c;现货黄金收报1946.01美元/盎司&#xff0c;上升4.76美元或0.25%&#xff0c;日内最高触及1957.31美元/盎司&#xff0c;最低触…

1.3 eBPF的工作原理初探 --- 更新中

写在前面 上一节提到过,eBPF程序是面向BPF体系结构指令集编写的,它并不直接运行在Linux内核中,我们可以理解为它是运行在eBPF虚拟机,由eBPF虚拟机来执行eBPF字节码,就像java运行在jvm一样。 我们用一张原理图来看下eBPF程序的编译,加载,验证,钩子,映射等结点。 如上是…