题目: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代码中的信息比较,最后打印输出。
效果:
版权声明:本文为qq_47831505原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。