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

news2024/11/24 22:44:38

文章目录

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


在这里插入图片描述

📋前言

人生苦短,我用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/585045.html

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

相关文章

4.文件系统

组成 Linux:一切皆文件 索引节点(I-node) I-node(Index Node):文件系统的内部数据结构,用于管理文件的元数据和数据块。 文件的元数据:包括文件的权限、拥有者、大小、时间戳、索引…

VM增加磁盘并挂载到根目录

1、虚拟机增加磁盘 首先要关闭虚拟机,否则增加按钮不可见。 9 vm添加磁盘完毕。 2、登录虚拟机挂盘 1、lsblk查看硬盘挂载情况,sdb为新挂载的磁盘。 [rootlocalhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda …

通过python封装接口采集1688店铺所有商品数据接口,1688店铺所有商品接口,1688API接口

采集1688店铺所有商品数据需要进行以下步骤: 获取店铺ID 要获取店铺ID,您可以通过访问店铺首页来获取,例如:https://1688455341.1688.com/ 店铺ID就是链接中的“1688455341”。 获取店铺所有商品列表页 通过向1688店铺的搜索…

关于【SD-WEBUI】的LoRA模型训练:怎样才算训练好了?

文章目录 (零)前言(一)模型(LoRA)训练(1.1)数据准备(1.1.1)筛选照片(1.1.2)预处理照片(1.1.3)提示词(tags)处理(1.1.4&…

部署微信小程序-shopro

部署微信小程序 开始之前 注意不要运行模式下的代码提交小程序审核,第一包体积太大,第二性能太差请下载 小程序开发工具正式小程序无法正常使用,而开发版正常,请确保域名都添加到小程序后台,并且配置好了 IP 白名单&a…

Openai+Deeplearning.AI: ChatGPT Prompt Engineering(五)

想和大家分享一下最近学习的Deeplearning.AI和openai联合打造ChatGPT Prompt Engineering在线课程.以下是我写的关于该课程的前四篇博客: ChatGPT Prompt Engineering(一)ChatGPT Prompt Engineering(二)ChatGPT Prompt Engineering(三)ChatGPT Prompt Engineering…

微星笔记本618大促至高直降5000元,泰坦GP78 HX爆款配置10999拿下

在万众玩家的期待下,微星笔记本618大促如约而至!不仅覆盖今年全新13代酷睿HX RTX40系显卡的高能游戏本,还特别在618同步推出新品:泰坦GP78 HX,承袭“泰坦系列”旗舰的满血基因极致性能体验外,更有i9-13980…

自学web前端能找到工作吗?是否有必要参加前端培训?

是的,自学前端可以帮助您找到工作,参加培训是根据个人学习能力和经济实力来自己决定的。前端开发是一个相对容易入门的领域,并且许多人通过自学成功地找到了前端开发的工作。以下是好程序员的一些建议,可以帮助您在自学前端时提高…

头顶“米链代工厂”标签,德尔玛上市之后怎么走?

截至5月29日上午收盘,德尔玛股价当前为14.10、成交量55272手、成交额为7820.32万,总市值65.08亿元,总股本为4.62亿。 曲折的股价走势背后,德尔玛未来的增长潜力成疑。德尔玛表示,此次上市将有助于公司在创新家电市场保…

诚迈科技携智达诚远出席高通汽车技术与合作峰会

5月25日至26日,诚迈科技及旗下的智能汽车操作系统及中间件产品提供商智达诚远作为高通生态伙伴,亮相首届“高通汽车技术与合作峰会”,通过产品展示和主题演讲呈现了基于高通骁龙数字底盘的最新智能座舱技术成果,共同展望智能网联汽…

Java代码命名规范是真优雅呀!代码如诗

Java 命名规范 一、Java总体命名规范 1、项目名全部小写. 2、包名全部小写. 3、类名首字母大写,其余组成词首字母依次大写. 4、变量名,方法名首字母小写,如果名称由多个单词组成,除首字母外的每个单词首字母都要大写. 5、常量名全部大写. 6、所有命名规则必须遵循以下规则 : …

Java - ThreadLocal数据存储和传递方式的演变之路

Java - ThreadLocal数据存储和传递方式的演变之路 前言一. InheritableThreadLocal - 父子线程数据传递1.1 父子线程知识预热和 InheritableThreadLocal 实现原理1.2 InheritableThreadLocal 的诟病 二. TransmittableThreadLocal (TTL) 横空出世2.1 跨线程变量传递测试案例2.2…

代码随想录二刷 day06 | 哈希表之 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

day06 242.有效的字母异位词349. 两个数组的交集202. 快乐数1. 两数之和 哈希表能解决什么问题呢?一般哈希表都是用来快速判断一个元素是否出现集合里。 242.有效的字母异位词 题目链接 解题思路: 题目的意思就是 判断两个字符串是否由相同字母组成。 字…

【Java|基础篇】内部类

文章目录 1.什么是内部类?2.实例内部类3.静态内部类4.局部内部类5.匿名内部类6.结语 1.什么是内部类? 内部类就是在一个类中再定义一个类,内部类也是封装的体现.它可以被声明为 public、protected、private 或默认访问控制符。内部类可以访问外部类的所有成员变量和方法&…

【WebRTC】音视频通信

WebRTC对等体还需要查找并交换本地和远程音频和视频媒体信息,例如分辨率和编解码器功能。 交换媒体配置信息的信令通过使用被称为SDP的会话描述协议格式来交换,被称为提议和应答的元数据块 WebRTC 音视频通信基本流程 一方发起调用 getUserMedia 打开本…

线程池在业务中的实践-美团技术团队分享

原文地址:Java线程池实现原理及其在美团业务中的实践 场景1:快速响应用户请求 描述:用户发起的实时请求,服务追求响应时间。比如说用户要查看一个商品的信息,那么我们需要将商品维度的一系列信息如商品的价格、优惠、…

从小白到大神之路之学习运维第31天

第二阶段基础 时 间:2023年5月29日 参加人:全班人员 内 容: Rsync服务 目录 一、基本信息 二、rsync命令 三、rsyncinotfy实时同步 一、基本信息 (一)概述 rsync是linux 下一个远程数据同步工具 他可通过…

拼多多获取整站实时商品详情数据|商品标题|商品链接,数据采集,数据分析提取教程

拼多多是一个基于社交电商的购物平台,它通过通过价格和优惠吸引大量用户,使用户形成消费场景和消费共同体,最终实现规模效应。在拼多多运营中,API接口起到了重要的作用,它可以实现不同系统之间的信息共享和数据传递&am…

EasyDSS使用OBS推流成功,但不显示播放按钮是什么原因?

EasyDSS支持一站式的上传、转码、直播、回放、嵌入、分享功能,具有多屏播放、自由组合、接口丰富等特点。平台可以为用户提供专业、稳定的直播推流、转码、分发和播放服务,全面满足超低延迟、超高画质、超大并发访问量的要求。 有用户反馈,使…

如何找到高清照片,4K高清风景照片,建议收藏!

想找些高清的风景图来做本个性杂志给朋友或者只是想用做壁纸使用,结果崩溃于互联网图片的图海中。 如何找到高清照片? 1. 图片分享网站 如果你想查找高清的风景图片,那么图片分享网站是一个不错的选择。这些网站通常提供大量的高清图片供用…