前言

登录这个场景在写用例的时候经常会有,我们可以把登录封装成一个方法,然后把账号和密码参数化,这样以后用的登录的时候,只需调用这个方法就行了

一、登录方法

1.把输入账号、输入密码、点击登录按钮三个步骤写成一个方法

2.然后把输入的账号和密码参数化

二、用例

1.下面的用例可以调用前面写的登录方法,这样不用每次都去走登录流程

2.判断是否登录成功,我这里是取的登录成功后的账户名

三、判断方法封装

1.如果用上面的方法去判断的话,有个缺陷,当登录不成功的时候,页面是不会跳转的,所以查找元素会报异常:

NoSuchElementException: Message: Unable to locate element: {"method":"id","selector":"lnk_current_user"}

2.这个时候就简单封装下判断方法:获取到账户名返回Ture;没有获取到返回False

四、优化后案例

1.优化后的登录案例如下,这样看起来更清楚了

五、参考代码

# coding:utf-8
from selenium import webdriver
import unittest
import time
class Bolg(unittest.TestCase):
    u'''登录博客'''
    def setUp(self):
        self.driver = webdriver.Firefox()
        url = "https://passport.cnblogs.com/user/signin"
        self.driver.get(url)
        self.driver.implicitly_wait(30)

def login(self, username, psw):
        u'''这里写了一个登录的方法,账号和密码参数化'''
        self.driver.find_element_by_id("input1").send_keys(username)
        self.driver.find_element_by_id("input2").send_keys(psw)
        self.driver.find_element_by_id("signin").click()
        time.sleep(3)

def is_login_sucess(self):
        u'''判断是否获取到登录账户名称'''
        try:
            text = self.driver.find_element_by_id("lnk_current_user").text
            print text
            return True
        except:
            return False

def test_01(self):
        u'''登录案例参考:账号,密码自己设置'''
        self.login(u"上海-悠悠", u"xxxx")  # 调用登录方法
        # 判断结果
        result = self.is_login_sucess()
        self.assertTrue(result)

def test_02(self):
        u'''登录案例参考:账号,密码自己设置'''
        self.login(u"上海-悠悠", u"xxxx")  # 调用登录方法
        # 判断结果   # 交流QQ群:232607095
        result = self.is_login_sucess()
        self.assertTrue(result)

# def test_01(self):
    #     u'''登录案例参考:账号,密码自己设置'''
    #     self.login(u"上海-悠悠", u"xxxx")  # 调用登录方法
    #     # 获取登录后的账号名称
    #     text = self.driver.find_element_by_id("lnk_current_user").text
    #     print text
    #     # 断言实际结果与期望结果一致
    #     self.assertEqual(text, u"上海-悠悠")
    #
    # def test_02(self):
    #     u'''登录案例参考:账号,密码自己设置'''
    #     self.login(u"上海-悠悠", u"oooo")  # 调用登录方法
    #     # 获取登录后的账号名称
    #     text = self.driver.find_element_by_id("lnk_current_user").text
    #     print text       # 交流QQ群:232607095
    #     # 断言实际结果与期望结果一致
    #     self.assertEqual(text, u"上海-悠悠")

def tearDown(self):
        self.driver.quit()

if __name__ == "__main__":
    unittest.main()

最新文章

  1. MDK5 STM32编译问题汇总
  2. web.xml listener和event
  3. [CF225C] Barcode (简单DAG上dp)
  4. 运用Mono.Ceci类库修改.NET程序集 走上破解软件的道路
  5. 外部调用JS文件时出现中文乱码的解决办法
  6. 创建plist文件
  7. SSIS ->> Data Flow Design And Tuning
  8. CAKeyframeAnimation 旋转动画
  9. MFC 设置窗口背景图片
  10. GridView使用技巧
  11. Spring揭秘 读书笔记 七 BeanFactory的启动分析
  12. ASP.NET Core DevOps
  13. Django之csrf防御机制
  14. python时间和日期
  15. nginx pcre错误
  16. Objective-C:分类(Category、extension)
  17. 【转载】关于RenderTarget的注意事项
  18. kubeadm高可用master节点部署文档
  19. .apk文件的MIME类型
  20. 595. Big Countries

热门文章

  1. Mac上基于hexo+GitHub搭建个人博客(一)
  2. lintcode-128-哈希函数
  3. doget,doPost在底层走的是service
  4. dp类模板
  5. Netscaler的超高端口复用助力应对公网地址紧张
  6. [洛谷P2602][ZJOI2010]数字计数
  7. hdu4035 Maze 【期望dp + 数学】
  8. bzoj
  9. BZOJ day2_plus
  10. 【NOIP 模拟赛】钟 模拟+链表