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代码中的信息比较,最后打印输出。

效果:

相关文章
|
1天前
|
Java 测试技术 C#
自动化测试之美:从Selenium到Appium
【10月更文挑战第3天】在软件开发的海洋中,自动化测试如同一艘航船,引领着质量保证的方向。本文将带你领略自动化测试的魅力,从Web端的Selenium到移动端的Appium,我们将一探究竟,看看这些工具如何帮助我们高效地进行软件测试。你将了解到,自动化测试不仅仅是技术的展示,更是一种提升开发效率和产品质量的智慧选择。让我们一起启航,探索自动化测试的世界!
|
2天前
|
Web App开发 IDE 测试技术
自动化测试的利器:Selenium 框架深度解析
【10月更文挑战第2天】在软件开发的海洋中,自动化测试犹如一艘救生艇,让质量保证的过程更加高效与精准。本文将深入探索Selenium这一强大的自动化测试框架,从其架构到实际应用,带领读者领略自动化测试的魅力和力量。通过直观的示例和清晰的步骤,我们将一起学习如何利用Selenium来提升软件测试的效率和覆盖率。
|
8天前
|
测试技术 数据安全/隐私保护 开发者
自动化测试的奥秘:如何用Selenium和Python提升软件质量
【9月更文挑战第35天】在软件开发的海洋中,自动化测试是那艘能引领我们穿越波涛的帆船。本文将揭开自动化测试的神秘面纱,以Selenium和Python为工具,展示如何构建一个简单而强大的自动化测试框架。我们将从基础出发,逐步深入到高级应用,让读者能够理解并实现自动化测试脚本,从而提升软件的质量与可靠性。
|
22天前
|
Web App开发 JavaScript Java
自动化测试的利剑:Selenium WebDriver入门与实践
【9月更文挑战第21天】在软件开发的海洋中,自动化测试犹如一艘船,帮助开发者们快速航行至质量保证的彼岸。本文将作为你的罗盘,指引你了解和掌握Selenium WebDriver这一强大的自动化测试工具。通过深入浅出的方式,我们将探索Selenium WebDriver的基本概念、安装过程以及编写简单测试脚本的方法。无论你是刚接触自动化测试的新手,还是希望提升测试技能的开发者,这篇文章都将为你提供有价值的指导。
|
22天前
|
Web App开发 测试技术 持续交付
自动化测试的利器:Selenium与Python的完美结合
【9月更文挑战第21天】在软件开发的世界里,测试是确保产品质量的关键步骤。随着敏捷开发和持续集成的流行,自动化测试工具变得尤为重要。本文将介绍如何使用Selenium和Python进行高效的自动化测试,不仅提供代码示例,还深入探讨如何设计测试用例、选择正确的测试框架、以及如何整合到CI/CD流程中。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用的技巧。
36 3
|
29天前
|
敏捷开发 Java 测试技术
探索自动化测试的奥秘:从Selenium到Appium
【9月更文挑战第14天】软件测试,这个看似枯燥乏味却至关重要的领域,正经历着一场革命。随着技术的进步,自动化测试工具如Selenium和Appium已成为质量保证的利器。本文将带你一探这些工具的神秘面纱,了解它们如何简化测试流程、提升效率,并确保软件产品的质量。准备好,我们将深入自动化测试的世界,解锁其背后的原理和实践技巧。
|
19天前
|
Web App开发 Linux Python
linux上安装selenium环境及测试
该文章提供了在Linux CentOS上安装Selenium环境、Chrome浏览器及Chromedriver的详细步骤,并演示了如何以无头模式进行测试。
58 0
|
1月前
|
敏捷开发 测试技术 持续交付
自动化测试之美:如何用Selenium和Python打造高效测试脚本
【9月更文挑战第13天】在软件开发的海洋中,自动化测试是那抹不可或缺的亮色。它不仅提升了测试效率,还保障了产品质量。本文将带你领略使用Selenium和Python构建自动化测试脚本的魅力所在,从环境的搭建到脚本的编写,再到问题的排查,每一步都是对软件质量把控的深刻理解和实践。让我们开始这段探索之旅,解锁自动化测试的秘密吧!
26 0
|
6天前
|
机器学习/深度学习 人工智能 运维
构建高效运维体系:从自动化到智能化的演进
本文探讨了如何通过自动化和智能化手段,提升IT运维效率与质量。首先介绍了自动化在简化操作、减少错误中的作用;然后阐述了智能化技术如AI在预测故障、优化资源中的应用;最后讨论了如何构建一个既自动化又智能的运维体系,以实现高效、稳定和安全的IT环境。
|
2天前
|
运维 Prometheus 监控
运维中的自动化实践每月一次的系统维护曾经是许多企业的噩梦。不仅因为停机时间长,更因为手动操作容易出错。然而,随着自动化工具的引入,这一切正在悄然改变。本文将探讨自动化在IT运维中的重要性及其具体应用。
在当今信息技术飞速发展的时代,企业对系统的稳定性和效率要求越来越高。传统的手动运维方式已经无法满足现代企业的需求。自动化技术的引入不仅提高了运维效率,还显著降低了出错风险。本文通过几个实际案例,展示了自动化在IT运维中的具体应用,包括自动化部署、监控告警和故障排除等方面,旨在为读者提供一些实用的参考。