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

代码如下:

 '''
cnblog的登录测试,分下面几种情况:
(1)用户名、密码正确
(2)用户名正确、密码不正确
(3)用户名正确、密码为空
(4)用户名错误、密码正确
(5)用户名为空、密码正确(还有用户名和密码均为空时与此情况是一样的,这里就不单独测试了)
'''
import unittest
from selenium import webdriver
from time import sleep class LoginCase(unittest.TestCase): def setUp(self):
self.dr = webdriver.Chrome()
self.dr.maximize_window() #定义登录方法
def login(self, username, password):
self.dr.get('https://passport.cnblogs.com/user/signin') #cnblog登录页面
self.dr.find_element_by_id('input1').send_keys(username)
self.dr.find_element_by_id('input2').send_keys(password)
self.dr.find_element_by_id('signin').click() def test_login_success(self):
'''用户名、密码正确'''
self.login('kemi_xxx', 'kemi_xxxx') #正确用户名和密码
sleep(3)
link = self.dr.find_element_by_id('lnk_current_user')
self.assertTrue('菜鸟可米' in link.text) #用assertTrue(x)方法来断言 bool(x) is True 登录成功后用户昵称在lnk_current_user里
self.dr.get_screenshot_as_file("D:\cnblogtest\\login_success.jpg") #截图 可自定义截图后的保存位置和图片命名 def test_login_pwd_error(self):
'''用户名正确、密码不正确'''
self.login('kemi_xxx', 'kemi') #正确用户名,错误密码
sleep(2)
error_message = self.dr.find_element_by_id('tip_btn').text
self.assertIn('用户名或密码错误', error_message) #用assertIn(a,b)方法来断言 a in b '用户名或密码错误'在error_message里
self.dr.get_screenshot_as_file("D:\cnblogtest\\login_pwd_error.jpg") def test_login_pwd_null(self):
'''用户名正确、密码为空'''
self.login('kemi_xxx', '') #密码为空
error_message = self.dr.find_element_by_id('tip_input2').text
self.assertEqual(error_message,'请输入密码') #用assertEqual(a,b)方法来断言 a == b 请输入密码等于error_message
self.dr.get_screenshot_as_file("D:\cnblogtest\\login_pwd_null.jpg") def test_login_user_error(self):
'''用户名错误、密码正确'''
self.login('kemixing', 'kemi_xxx') #密码正确,用户名错误
sleep(2)
error_message = self.dr.find_element_by_id('tip_btn').text
self.assertIn('该用户不存在', error_message) #用assertIn(a,b)方法来断言 a in b
self.dr.get_screenshot_as_file("D:\cnblogtest\\login_user_error.jpg") def test_login_user_null(self):
'''用户名为空、密码正确'''
self.login('', 'kemi_xxx') #用户名为空,密码正确
error_message = self.dr.find_element_by_id('tip_input1').text
self.assertEqual(error_message,'请输入登录用户名') #用assertEqual(a,b)方法来断言 a == b
self.dr.get_screenshot_as_file("D:\cnblogtest\\login_user_null.jpg") def tearDown(self):
sleep(2)
print('自动测试完毕!')
self.dr.quit() if __name__ == '__main__':
unittest.main()

测试结果如下:

测试截图如下:

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

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

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

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

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

一次简单完整的自动化登录测试-基于python+selenium进行cnblog的自动化登录测试的更多相关文章

  1. 一次完整的自动化登录测试-基于python+selenium进行cnblog的自动化登录测试

    Web登录测试是很常见的测试!手动测试大家再熟悉不过了,那如何进行自动化登录测试呢!本文作者就用python+selenium结合unittest单元测试框架来进行一次简单但比较完整的cnblog自动 ...

  2. 基于Python实现的死链接自动化检测工具

    基于Python实现的死链接自动化检测工具   by:授客 QQ:1033553122 测试环境: win7 python 3.3.2 chardet 2.3.0 脚本作用: 检测系统中访问异常(请求 ...

  3. web自动化 基于python+Selenium+PHP+Ftp实现的轻量级web自动化测试框架

    基于python+Selenium+PHP+Ftp实现的轻量级web自动化测试框架   by:授客 QQ:1033553122     博客:http://blog.sina.com.cn/ishou ...

  4. 开源you-get项目爬虫,以及基于python+selenium的自动测试利器

    写在前面 爬虫和自动测试,对于python来说是最合适不过也是最擅长的. 开源的项目也很多,例如you-get项目https://github.com/soimort/you-get.盗链和爬虫神器. ...

  5. Python Selenium Cookie 绕过验证码实现登录

    Python Selenium Cookie 绕过验证码实现登录 之前介绍过博客园的通过cookie 绕过验证码实现登录的方法.这里并不多余,会增加分析和另外一种方法实现登录. 1.思路介绍 1.1. ...

  6. Selenium网页自动登录项目(基于Python从0到1)

    Selenium是一个自动化测试工具,利用它我们可以驱动浏览器执行特定的动作,如点击.下拉等操作. 本文讲述的是通过自动化的方式登陆某一网站,其中包含Selenium+python自动化项目环境如何部 ...

  7. 基于python的request库,模拟登录csdn博客

    以前爬虫用urllib2来实现,也用过scrapy的爬虫框架,这次试试requests,刚开始用,用起来确实比urllib2好,封装的更好一些,使用起来简单方便很多. 安装requests库     ...

  8. python+selenium破解极验验证登录

    1.前言: 目前很多网站会在正常的账号密码认证之外加一些验证码,以此来明确区分人/机行为,最典型的就是极验滑动验证.(如下图) 这里我们以简单实例说明如何实现自动校验类似验证. 2.步骤: 1)点击验 ...

  9. airtest自动化中的poco+python连接手机实现ui自动化

    airtest:http://airtest.netease.com/docs/docs_AirtestIDE-zh_CN/index.html官网地址 AirtestIDE:跨平台的UI自动化测试编 ...

随机推荐

  1. sqlcmd导入大数据文件

    sqlcmd导入大数据文件 SQLCMD 允许在Windows命令窗中通过命令行提示符运行脚本. 语法如下: sqlcmd  [  { { -U <login id> [ -P <p ...

  2. General error 2006 MySQL server has gone away

    写入配置文件的办法: max_allowed_packet = 16M //但是这种有时候不支持,1024*1024*16这种有的也不支持 max_allowed_packet = 16777216 ...

  3. mysql连接数据库存报下面错误:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

    输入 mysql -u root 登录 mysql 的时候出现以下错误: ERROR 2002 (HY000): Can't connect to local MySQL server through ...

  4. 记一次JPA查询分页导致的数据丢失问题

    使用JPA查询,共17条数据,每页10条数据. 第一页与第二页有一条重复的数据,导致丢失一条数据 后查明原因发现,该查询使用了排序,排序字段的值在多条数据中相同,比如在3-11条是相同的值.此时跳到第 ...

  5. Android 最火开发框架 xUtils

    xUtils简介 xUtils3 api变化较多, 已转至 https://github.com/wyouflf/xUtils3 xUtils 2.x对Android 6.0兼容不是很好, 请尽快升级 ...

  6. 可以foreach的 必须继承IEnumable 接口才行

    只要是继承IEnumable 都可以用foreach遍历

  7. adf常用方法总结

    1.使用clientAttribute传值.获取值 或组件上面放客户端属性 <af:selectBooleanCheckbox text="" label="&qu ...

  8. Html的Padding,Margin自己理解图

    Html的Padding,Margin自己理解图.

  9. YAML教程

    一.简介 YAML是一种人们可以轻松阅读的数据序列化格式,并且它非常适合对动态编程语言中使用的数据类型进行编码.YAML是YAML Ain't Markup Language简写,和GNU(" ...

  10. 2018年这些UI设计趋势正在流行,跟上必拿高薪!

    数字设计领域和时尚圈是一样的,总会有各种各样的趋势让人眼花缭乱.无论是用户界面的视觉元素,还是用户体验的细节,总有许多值得说道的新玩法和新方向.就目前来看,UI设计的大趋势是更加大胆新颖的视觉设计,通 ...