前言
登录这个场景在写用例的时候经常会有,我们可以把登录封装成一个方法,然后把账号和密码参数化,这样以后用的登录的时候,只需调用这个方法就行了
一、登录方法
1.把输入账号、输入密码、点击登录按钮三个步骤写成一个方法
2.然后把输入的账号和密码参数化
二、用例
1.下面的用例可以调用前面写的登录方法,这样不用每次都去走登录流程
2.判断是否登录成功,我这里是取的登录成功后的账户名
三、判断方法封装
1.如果用上面的方法去判断的话,有个缺陷,当登录不成功的时候,页面是不会跳转的,所以查找元素会报异常:
NoSuchElementException: Message: Unable to locate element: {"method":"id","selector":"lnk_current_user"}
2.这个时候就简单封装下判断方法:获取到账户名返回Ture;没有获取到返回False
四、优化后案例
1.优化后的登录案例如下,这样看起来更清楚了
五、参考代码
1 # coding:utf-8 2 from selenium import webdriver 3 import unittest 4 import time 5 class Bolg(unittest.TestCase): 6 u'''登录博客''' 7 def setUp(self): 8 self.driver = webdriver.Firefox() 9 url = "https://passport.cnblogs.com/user/signin" 10 self.driver.get(url) 11 self.driver.implicitly_wait(30) 12 13 def login(self, username, psw): 14 u'''这里写了一个登录的方法,账号和密码参数化''' 15 self.driver.find_element_by_id("input1").send_keys(username) 16 self.driver.find_element_by_id("input2").send_keys(psw) 17 self.driver.find_element_by_id("signin").click() 18 time.sleep(3) 19 20 def is_login_sucess(self): 21 u'''判断是否获取到登录账户名称''' 22 try: 23 text = self.driver.find_element_by_id("lnk_current_user").text 24 print text 25 return True 26 except: 27 return False 28 29 def test_01(self): 30 u'''登录案例参考:账号,密码自己设置''' 31 self.login(u"上海-悠悠", u"xxxx") # 调用登录方法 32 # 判断结果 33 result = self.is_login_sucess() 34 self.assertTrue(result) 35 36 def test_02(self): 37 u'''登录案例参考:账号,密码自己设置''' 38 self.login(u"上海-悠悠", u"xxxx") # 调用登录方法 39 # 判断结果 # 交流QQ群:232607095 40 result = self.is_login_sucess() 41 self.assertTrue(result) 42 43 # def test_01(self): 44 # u'''登录案例参考:账号,密码自己设置''' 45 # self.login(u"上海-悠悠", u"xxxx") # 调用登录方法 46 # # 获取登录后的账号名称 47 # text = self.driver.find_element_by_id("lnk_current_user").text 48 # print text 49 # # 断言实际结果与期望结果一致 50 # self.assertEqual(text, u"上海-悠悠") 51 # 52 # def test_02(self): 53 # u'''登录案例参考:账号,密码自己设置''' 54 # self.login(u"上海-悠悠", u"oooo") # 调用登录方法 55 # # 获取登录后的账号名称 56 # text = self.driver.find_element_by_id("lnk_current_user").text 57 # print text # 交流QQ群:232607095 58 # # 断言实际结果与期望结果一致 59 # self.assertEqual(text, u"上海-悠悠") 60 61 def tearDown(self): 62 self.driver.quit() 63 64 if __name__ == "__main__": 65 unittest.main()