selenium+python自动化测试--登录

简介: selenium+python自动化测试--登录

题目:selenium+python自动化测试–登录

一、用例分析:

用例1:不输入,点击登录  
期望:手机号码不能为空,请重新输入  
  
用例2:只输入手机号,不输入密码,点击登录  
期望:密码不能为空,请重新输入(提示信息)  
  
用例3:只输入密码,不输入手机号,点击登录  
期望:手机号码不能为空,请重新输入(提示信息)  
  
用例4:输入错误的账号和密码,点击登录  
期望:手机号或密码错误(提示信息)  
  
用例5:正确输入手机号和密码,点击登录  
期望:登录成功,跳转至有登录成功字样的页面  
  
用例6:输入错误格式的手机号  
期望:手机号码格式不正确,请重新输入(提示信息) 

二、代码编写:

登录测试文件:login.py

1.import unittest  
2.from selenium import webdriver  
3.import time  
4.from selenium.webdriver.chrome.service import Service  
5.from selenium.webdriver.support.ui import WebDriverWait  
6.from selenium import webdriver  
7.  
8.class Base():  
9.  
10.    def __init__(self,driver):  
11.        self.driver=driver  
12.  
13.    def find(self,locator):  
14.        '''''locator = ("id","kw"),查找某元素'''  
15.        element = WebDriverWait(self.driver, 20, 1).until(lambda x: x.find_element(*locator))  
16.        return element  
17.  
18.    def send(self,locator,text):  
19.        '''''输入框传值'''  
20.        self.find(locator).send_keys(text)  
21.  
22.    def click(self,locator):  
23.        '''''点击事件'''  
24.        self.find(locator).click()  
25.  
26.    def is_element_exist(self,locator):  
27.        '''''判断元素是否存在'''  
28.        els = self.find(locator)  
29.        if els is not None:  
30.            print(els.text)  
31.            return True  
32.        else:  
33.            return False  
34.  
35.class TestKlogin(unittest.TestCase):  
36.    #定位手机号  
37.    username = ("name", "u")  
38.    #定位密码  
39.    psw = ("name", "p")  
40.    #定位登录按钮  
41.    loginbutton = ("id", "loginButton")  
42.    #定位登录成功信息  
43.    succ = ("id", "success")  
44.    #定位提示信息  
45.    message_u = ("id", "error_u")  
46.    message_p = ("id", "error_p")  
47. 
48.    @classmethod  
49.    def setUpClass(cls):  
50.        path = r'D:\软件测试\chromedriver_win32\chromedriver.exe '  # 指定驱动存放目录  
51.        ser = Service(path)  
52.        chrome_options = webdriver.ChromeOptions()  
53.        cls.driver = webdriver.Chrome(service=ser, options=chrome_options)  
54.        cls.baselei = Base(cls.driver)  
55.  
56.    def setUp(self):  
57.        self.driver.get('http://hanpengfei.com.cn:8080/Login_war_exploded/')  
58.  
59.    def tearDown(self):  
60.        # 清空cookies  
61.        self.driver.delete_all_cookies()  
62. 
63.    @classmethod  
64.    def tearDownClass(cls):  
65.        cls.driver.quit()  
66.  
67.    def test_01_bushuru(self):  
68.        '''''不输入,点击登录'''  
69.        self.baselei.click(self.loginbutton)  
70.        result1 = self.baselei.find(self.message_u).text  
71.        print("我是内容test01: ", result1)  
72.        exp1 = "手机号码不能为空,请重新输入"  
73.        self.assertEqual(result1, exp1)  
74.  
75.    def test_02_shuruname(self):  
76.        '''''只输入手机号,不输入密码'''  
77.        self.baselei.send(self.username, "17352161806")  
78.        self.baselei.click(self.loginbutton)  
79.        result2 = self.baselei.find(self.message_p).text  
80.        print("我是内容test02: ", result2)  
81.        exp2 = "密码不能为空,请重新输入"  
82.        self.assertTrue(result2 == exp2)  
83.  
84.    def test_03_shurupsw(self):  
85.        '''''只输入密码,不输入手机号'''  
86.        self.baselei.send(self.psw, "123465")  
87.        self.baselei.click(self.loginbutton)  
88.        result3 = self.baselei.find(self.message_u).text  
89.        print("我是内容test03: ", result3)  
90.        exp3 = "手机号码不能为空,请重新输入"  
91.        self.assertTrue(result3 == exp3)  
92.  
93.    def test_04_shurufail(self):  
94.        '''''输入错误的账号和密码'''  
95.        self.baselei.send(self.username, "17352161806")  
96.        self.baselei.send(self.psw, "68619")  
97.        self.baselei.click(self.loginbutton)  
98.        # time.sleep(50)  
99.        result4 = self.baselei.find(self.message_p).text  
100.        print("我是内容test04: ", result4)  
101.        exp4 = "手机号或密码错误"  
102.        self.assertEqual(result4, exp4)  
103.  
104.    def test_05_loginsuccess(self):  
105.        '''''正确输入手机号和密码'''  
106.        self.baselei.send(self.username,"17352161806")  
107.        self.baselei.send(self.psw,"1234")  
108.        self.baselei.click(self.loginbutton)  
109.        print("我是内容test05: ", end=' ')  
110.        result5 = self.baselei.is_element_exist(self.succ)  
111.        self.assertTrue(result5)  
112.  
113.    def test_06_loginsuccess(self):  
114.            '''''输入错误格式的手机号'''  
115.            self.baselei.send(self.username,"1735216")  
116.            self.baselei.send(self.psw,"1234")  
117.            self.baselei.click(self.loginbutton)  
118.            result6 = self.baselei.find(self.message_u).text  
119.            print("我是内容test06: ", result6)  
120.            exp6 = "手机号码格式不正确,请重新输入"  
121.            self.assertTrue(result6 == exp6)  
122.  
123.if __name__ == '__main__':  
124.    unittest.main()  

后台登录代码(Jsp):

index.jsp:

1.<%@ page contentType="text/html;charset=UTF-8" language="java" %>  
2.<!DOCTYPE html>  
3.<html lang="en">  
4.<head>  
5.  <meta charset="UTF-8">  
6.  <title>登录</title>  
7.  <link rel="stylesheet" type="text/css" href="Login.css"/>  
8.  <script>  
9.    function checkMobile() {  
10.      var mobile = re.number.value;  
11.      var mobileId = document.getElementById("error_u");  
12.      var regMobile = /^1\d{10}$/;  
13.      // window.alert("."+mobile+".")  
14.      if(mobile==""){  
15.        mobileId.innerHTML = "手机号码不能为空,请重新输入";  
16.        mobileId.style.fontSize = "1px";  
17.        mobileId.style.color = "red";  
18.        return false;  
19.      }  
20.      else if (regMobile.test(mobile) == false) {  
21.        mobileId.innerHTML = "手机号码格式不正确,请重新输入";  
22.        mobileId.style.fontSize = "1px";  
23.        mobileId.style.color = "red";  
24.        return false;  
25.      } else {  
26.        mobileId.innerHTML = "";  
27.        return true;  
28.      }  
29.    }  
30.    function checkRepass(){  
31.      var pwd=re.pass.value;  
32.      var mobileId = document.getElementById("error_p");  
33.      if(pwd==""){  
34.        mobileId.innerHTML = "密码不能为空,请重新输入";  
35.        mobileId.style.fontSize = "1px";  
36.        mobileId.style.color = "red";  
37.        return false;  
38.      }  
39.      else{  
40.        return true;  
41.      }  
42.    }  
43.    function checksubmit () {  
44.      checkMobile();  
45.      return checkRepass() && checkMobile();  
46.    }  
47.  </script>  
48.</head>  
49.<body>  
50.<div id="login">  
51.  <h1>Login</h1>  
52.  <form action="${pageContext.request.contextPath}/loginServlet" name="re" method="post" onsubmit="return checksubmit()">  
53.    <table width="900px" border="0" cellspacing="0">  
54.      <tr>  
55.        <td style="width: 300px"><input type="text"  id="number" placeholder="手机号" name="u" onblur="checkMobile()"></input></td>  
56.        <td><div id="error_u"><font size="1px"></font></div></td>  
57.      </tr>  
58.    <tr>  
59.      <td><input type="password" id="pass" placeholder="密码" name="p"></input></td  
60.      ><td><div id="error_p"><font size="1px">${errerMsg}</font></div></td>  
61.    </tr>  
62.      <tr>  
63.        <td><button class="but" type="submit" id="loginButton">登录</button></td>  
64.        <td></td>  
65.      </tr>  
66.    </table>  
67.  </form>  
68.</div>  
69.</body>  
70.</html>  

数据库、Servlet、css相关代码略。

三、运行结果:

四、总结:

后台:使用jsp编写了登录界面,在js里面对手机号的格式进行验证,对手机号和密码是否为空做了验证,在mysql数据库存放手机号和密码,在Servlet里面对手机号和密码是否正确在数据库里面进行验证,最后返回。将整个项目部署到服务器上面,通过域名http://hanpengfei.com.cn:8080/Login_war_exploded/进行访问。

测试:使用selenium+python对登录进行测试,先初始化浏览器,打开对应登录页面,

对6个用例进行分别测试,通过id以及name属性对页面进行定位,然后自动输入手机号和密码、并且获取错误信息和登录成功的提示,将错误信息与py代码中的信息比较,最后打印输出。

效果:

目录
相关文章
|
6月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
500 1
|
8月前
|
Web App开发 数据安全/隐私保护 Python
万能ck提取登录软件,京东贴吧淘宝拼多多cookie提取工具,python框架分享
这个框架使用了Selenium进行浏览器自动化操作,包含了京东和淘宝的登录示例。代码展示了如
|
7月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
463 18
|
6月前
|
测试技术
自动化测试登录后的功能
在自动化测试的时候,往往许多功能需要登录以后才可以进行操作的,在这里我介绍一种方法,在登录以后将Cookies信息存入本地文件,在测试登录以后操作的时候再从本地文件把信息调出来存入Cookies
120 4
|
8月前
|
存储 数据库 数据安全/隐私保护
抖音ck提取工具,快手小红书微博哔哩哔哩cookie提取登录软件,python框架
这个框架提供了完整的Cookie提取功能,支持抖音、快手、小红书、微博和哔哩哔哩平台。主要特点包括
|
8月前
|
IDE 测试技术 API
python调试与测试
python调试与测试
|
7月前
|
安全 测试技术 API
Python 单元测试详解
单元测试是Python开发中不可或缺的环节,能确保代码按预期运行、发现Bug、提升代码质量并支持安全重构。本文从基础概念讲起,逐步介绍Python单元测试的实践方法,涵盖unittest框架、pytest框架、断言使用、Mock技巧及测试覆盖率分析,助你全面掌握单元测试技能。
390 0
|
8月前
|
人工智能 Java 测试技术
Java or Python?测试开发工程师如何选择合适的编程语言?
测试工程师如何选择编程语言?Java 还是 Python?多位资深专家分享建议:Python 入门简单、开发效率高,适合新手及自动化测试;Java 生态成熟,适合大型项目和平台开发。建议结合公司技术栈、个人基础及发展方向选择。长远来看,两者兼通更佳,同时关注 Go 等新兴语言。快速学习与实践才是关键。
|
9月前
|
测试技术 Python
Python测试报告生成:整合错误截图,重复用例执行策略,调整测试顺序及多断言机制。
如何组织这一切呢?你可以写一本名为“Python测试之道”的动作指南手册,或者创建一个包含测试策略、测试顺序、多断言机制的脚本库。只要你的测试剧本编写得足够独到,你的框架就会像一位执行任务的超级英雄,将任何潜伏于代码深处的错误无情地揪出来展现在光天化日之下。这些整理好的测试结果,不仅有利于团队协作,更像冒险故事中的精彩篇章,带给读者无尽的探索乐趣和深刻的思考。
202 10
|
10月前
|
数据采集 Web App开发 前端开发
Python+Selenium爬虫:豆瓣登录反反爬策略解析
Python+Selenium爬虫:豆瓣登录反反爬策略解析

推荐镜像

更多