python+selenium进行cnblog的自动化登录测试

Web登录测试是很常见的测试,手动测试大家再熟悉不过了,那如何进行自动化登录测试呢!本文就基于python+selenium结合unittest单元测试框架来进行一次简单但比较完整的cnblog自动化登录测试,可提供点参考!下面就包括测试代码和每种测试情况的截图。

代码如下:

 1 '''
 2 cnblog的登录测试,分下面几种情况:
 3 (1)用户名、密码正确
 4 (2)用户名正确、密码不正确
 5 (3)用户名正确、密码为空
 6 (4)用户名错误、密码正确
 7 (5)用户名为空、密码正确(还有用户名和密码均为空时与此情况是一样的,这里就不单独测试了)
 8 '''
 9 import unittest
10 from selenium import webdriver
11 from time import sleep
12  
13 class LoginCase(unittest.TestCase):
14  
15     def setUp(self):
16         self.dr = webdriver.Chrome()
17         self.dr.maximize_window()
18  
19     #定义登录方法
20     def login(self, username, password):
21         self.dr.get('https://passport.cnblogs.com/user/signin')  #cnblog登录页面
22         self.dr.find_element_by_id('input1').send_keys(username)
23         self.dr.find_element_by_id('input2').send_keys(password)
24         self.dr.find_element_by_id('signin').click()
25  
26     def test_login_success(self):
27         '''用户名、密码正确'''
28         self.login('kemi_xxx', 'kemi_xxxx') #正确用户名和密码
29         sleep(3)
30         link = self.dr.find_element_by_id('lnk_current_user')
31         self.assertTrue('菜鸟可米' in link.text)   #用assertTrue(x)方法来断言  bool(x) is True 登录成功后用户昵称在lnk_current_user里
32         self.dr.get_screenshot_as_file("D:\cnblogtest\\login_success.jpg")  #截图  可自定义截图后的保存位置和图片命名
33  
34     def test_login_pwd_error(self):
35         '''用户名正确、密码不正确'''
36         self.login('kemi_xxx', 'kemi')  #正确用户名,错误密码
37         sleep(2)
38         error_message = self.dr.find_element_by_id('tip_btn').text
39         self.assertIn('用户名或密码错误', error_message)  #用assertIn(a,b)方法来断言 a in b  '用户名或密码错误'在error_message里
40         self.dr.get_screenshot_as_file("D:\cnblogtest\\login_pwd_error.jpg")
41  
42     def test_login_pwd_null(self):
43         '''用户名正确、密码为空'''
44         self.login('kemi_xxx', '')  #密码为空
45         error_message = self.dr.find_element_by_id('tip_input2').text
46         self.assertEqual(error_message,'请输入密码')  #用assertEqual(a,b)方法来断言  a == b  请输入密码等于error_message
47         self.dr.get_screenshot_as_file("D:\cnblogtest\\login_pwd_null.jpg")
48  
49     def test_login_user_error(self):
50         '''用户名错误、密码正确'''
51         self.login('kemixing', 'kemi_xxx')  #密码正确,用户名错误
52         sleep(2)
53         error_message = self.dr.find_element_by_id('tip_btn').text
54         self.assertIn('该用户不存在', error_message)  #用assertIn(a,b)方法来断言 a in b
55         self.dr.get_screenshot_as_file("D:\cnblogtest\\login_user_error.jpg")
56  
57     def test_login_user_null(self):
58         '''用户名为空、密码正确'''
59         self.login('', 'kemi_xxx')  #用户名为空,密码正确
60         error_message = self.dr.find_element_by_id('tip_input1').text
61         self.assertEqual(error_message,'请输入登录用户名')  #用assertEqual(a,b)方法来断言  a == b
62         self.dr.get_screenshot_as_file("D:\cnblogtest\\login_user_null.jpg")
63  
64     def tearDown(self):
65         sleep(2)
66         print('自动测试完毕!')
67         self.dr.quit()
68  
69 if __name__ == '__main__':
70     unittest.main()

测试结果如下:

测试截图如下:

正确用户名和密码登录成功!

正确用户名,错误密码登录失败!

用户名正确,密码为空,登录失败!

用户名错误,密码正确,登录失败!

用记名为空,正确密码,登录失败!

正在学习测试的小伙伴可以通过点击下面的小卡片 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

出海企业系列风险分析--网站需要验证码吗?

最近接待了几位从discuz来的用户,说是想要给自己海外的网站安装验证码,但是discuz境外服务器还要解析安装中心的DNS到境外服务器上,所以基于discuz建站的不好之处就在这里。 而且我们还讨论到一个问题,海外的网站,需要…

你知道mp3转换器怎么用吗?分享在线音频转换mp3怎么弄

飒飒:嘿,你有没有想过如何将在线音频转换为mp3格式? 潇潇:是的,我确实有过这个需求。在网上找到了一些工具和方法,可以帮助我们完成这个任务。 飒飒:那太好了!你能告诉我一些详细的…

JS代码加密技术:僵尸代码植入

JS混淆加密:僵尸代码 僵尸代码植入,是JS混淆加密中一项很有用的技术。 比如JShaman,作为国内知名的JS混淆加密产品,便具备这一功能。 它可以给原始代码中增加一些额代的功能代码,比如:变量定义、函数调用…

Linux dpkg和dpkg-deb常用参数使用说明

名词解释 “dpkg ”是“ Debian Packager ”的简写。为“Debian” 专门开发的套件管理系统,方便软件的安装、更新及移除。所有源自“Debian”的“Linux ”发行版都会使用 “dpkg”,例如 “ Ubuntu ”、“Knoppix ”等。 dpkg-deb和dpkg的区别 dpkg-de…

一次元数据空间内存溢出的排查记录 | 京东云技术团队

在应用中,我们使用的 SpringData ES的 ElasticsearchRestTemplate来做查询,使用方式不对,导致每次ES查询时都新实例化了一个查询对象,会加载相关类到元数据中。最终长时间运行后元数据出现内存溢出; 问题原因&#xf…

Node.js下载安装和环境变量配置(详细教程)

目录 一、官网地址下载安装包 二、安装程序 三、环境配置 四、测试 五、安装淘宝镜像 5.1、附加:如果有出现问题的小伙伴们可以检查一下自己的配置有没有出错 一、官网地址下载安装包 https://nodejs.org/zh-cn/download/ 选择你的项目或系统对应的node.js版本…

Openlayers实战:加载GeoJSON

在OPenlayers的交互中,经常性的我们要加载一些数据,在这个实战中,演示的是加载GeoJSON文件。 GeoJSON 是一种使用JavaScript 对象表示法(JSON) 对地理数据结构进行编码的格式。简而言之,GeoJSON 为你提供了一种简单的格式来表示简单的地理特征以及它们的非空间属性。 效果…

【CentOS安装make】

问题: bash: make: command not found 1、去官网查找最新版本 http://ftp.gnu.org/pub/gnu/make/ 查找最新安装包 2、下载解压缩 wget http://ftp.gnu.org/pub/gnu/make/make-4.2.tar.gz tar -zxvf make-4.2.tar.gz cd make-4.2mkdir buildcd build../configure…

在vite创建的vue3项目中使用Cesium加载czml路径信息和无人机模型

在vite创建的vue3项目中使用Cesium加载czml路径信息和无人机模型 用到的区域文件、地图标记文件、路径信息文件、模型文件 提取码:99jq 使用vite创建vue3项目 npm create vitelatestcd到创建的项目文件夹中 npm install安装Cesium npm i cesium vite-plugin-cesium…

opencv实战--角度测量和二维码条形码识别

文章目录 前言一、鼠标点击的角度测量二、二维码条形码识别 前言 一、鼠标点击的角度测量 首先导入一个带有角度的照片 然后下面的代码注册了一个鼠标按下的回调函数, 还有一个点的数列,鼠标事件为按下的时候就记录点,并画出点,…

uniapp左右滑动切换月份

左右滑动触发事件 给组件绑定事件,主要利用组件的触摸开始和触摸结束事件来实现: <view @touchstart="touchStart" @touchend="touchEnd"> 2,声明初始化点击位置变量startX data() {return {list:[],pageNum:1,pageSize:10,//初始化点击位置…

css之:is()、:where()和:has()伪元素的运用、使用、important

文章目录 简介1、:is()2、:where()3、:has() 简介 :is()、:where()和:has()伪元素是CSS中用于样式化元素的非常强大的工具。它们是在CSS选择器Level4规范中引入的。它们允许我们将样式应用于符合特定条件的任何元素&#xff0c;例如元素的类型、元素的位置和元素的后代。 1、:i…

【C#】并行编程实战:实现数据并行(4)

本章继续学习实现数据并行&#xff0c;本文主要介绍并行循环中的线程存储。这也是本章节的最后一篇。 本教程对应学习工程&#xff1a;魔术师Dix / HandsOnParallelProgramming GitCode 5、了解并行循环中的线程存储 默认情况下&#xff0c;所有并行循环都可以访问全局…

香橙派4和树莓派4B构建K8S集群实践之八: TiDB

目录 1. 说明 2. 准备工作 3. 安装 3.1 参考Tidb官方 v1.5安装说明 3.2 准备存储类 3.3 创建crd 3.4 执行operator 3.5 创建cluster/dashboard/monitor容器组 3.6 设置访问入口(Ingress & Port) 4. 装好后的容器状况 5. 遇到的问题 6. 参考 1. 说明 建立TiDB…

全志F1C200S嵌入式驱动开发(串口驱动)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 对于uboot、kernel和rootfs来说,他们的串口输出一般都是uart0。一般这么做,是没有问题的。只不过我们自己买的这块f1c200s电路板,设计者把uart转ttl的接口,改接到了uart1上面。…

微信小程序下拉选择

微信小程序中下拉框选择一般的交互方式有以下两种 直接下拉选择点击选择框后&#xff0c;弹出浮层进行选择 下边分别介绍两种方式的实现。在微信小程序中&#xff0c;这两种实现都需要修改三个文件 js 文件&#xff1a;下拉选择逻辑的具体实现 wxml 文件&#xff1a;下拉组件…

1、linux中安装tomcat

1、创建目录 cd /opt ls mkdir tomcat 2、将文件拖入tomcat目录中 3、解压安装包 cd /opt/tomcat ls tar -zxvf apache-tomcat-8.5.59.tar.gz 4、启动tomcat cd /opt/tomcat/apache-tomcat-8.5.59/bin ./startup.sh 5、在linux中访问 http://localhost:8080/ 6、开放端口 …

生成式AI管理规则落地 大模型后时代到来

国家网信办等七部门联合颁布的《生成式人工智能服务管理暂行办法》&#xff0c;给中国生成式AI产业树立了发展规范。 这份监管文件的用意并不止于管控&#xff0c;还用大量的笔墨传递出推动产业发展的原则&#xff0c;尤其强调“鼓励生成式人工智能技术在各行业、各领域的创新…

基于springboot,vue网上订餐系统

开发工具&#xff1a;IDEA 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 前端技术 &#xff1a;VueElementUI 服务端技术&#xff1a;springbootmybatisredis 本系统分用户前台和管理后台两部分&#xff0c;项…

Docker(三)之容器管理工具 Docker生态架构及部署

容器管理工具Docker生态架构及部署 一、Docker生态架构 1.1 Docker Containers Are Everywhere 1.2 生态架构 1.2.1 Docker Host 用于安装Docker daemon的主机&#xff0c;即为Docker Host&#xff0c;并且该主机中可基于容器镜像运行容器。 1.2.2 Docker daemon 用于管理…