zoukankan      html  css  js  c++  java
  • Selenium2+python自动化48-登录方法(参数化)【转载】

    本篇转自博客:上海-悠悠

    原文地址:http://www.cnblogs.com/yoyoketang/tag/unittest/

    前言

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

    一、登录方法

    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()

  • 相关阅读:
    git连接远程分支
    如何找N个数中第i小的数
    DeconvNet
    深度学习中的Internal Convariate Shift (ICS)
    BA算法解决p-中位问题
    蚁群算法
    蝙蝠算法初探
    轨迹压缩之Douglas-Peucker算法之C++实现
    遗传算法---编程小试
    NYOJ 1000
  • 原文地址:https://www.cnblogs.com/caoj/p/7792782.html
Copyright © 2011-2022 走看看