Selenium2+python自动化48-登录方法(参数化)

时间:2021-07-08 11:40:47

前言

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

一、登录方法

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

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

Selenium2+python自动化48-登录方法(参数化)

二、用例

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

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

Selenium2+python自动化48-登录方法(参数化)

Selenium2+python自动化48-登录方法(参数化)

三、判断方法封装

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

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

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

Selenium2+python自动化48-登录方法(参数化)

四、优化后案例

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

Selenium2+python自动化48-登录方法(参数化)

五、参考代码

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

学习过程中有遇到疑问的,可以加selenium(python+java) QQ群交流:646645429

觉得对你有帮助,就在右下角点个赞吧,感谢支持!

selenium+python高级教程》已出书:selenium webdriver基于Python源码案例

(购买此书送对应PDF版本)

Selenium2+python自动化48-登录方法(参数化)

Selenium2+python自动化48-登录方法(参数化)的更多相关文章

  1. Selenium2+python自动化48-登录方法(参数化)【转载】

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

  2. Selenium2+python自动化44-元素定位参数化(find_element)

    前言 元素定位有八种方法,这个能看到这一篇的小伙伴都知道了,那么有没有一种方法,可以把八种定位合为一种呢?也就是把定位的方式参数化,如id,name.css等设置为一个参数,这样只需维护定位方式的参数 ...

  3. Selenium2+python自动化44-元素定位参数化(find_element)【转载】

    前言 元素定位有八种方法,这个能看到这一篇的小伙伴都知道了,那么有没有一种方法,可以把八种定位合为一种呢?也就是把定位的方式参数化,如id,name.css等设置为一个参数,这样只需维护定位方式的参数 ...

  4. 【重要】Selenium2+python自动化44-元素定位参数化(find_element)

    转:https://www.cnblogs.com/yoyoketang/p/6551274.html 前言 元素定位有八种方法,这个能看到这一篇的小伙伴都知道了,那么有没有一种方法,可以把八种定位合 ...

  5. Selenium2+python自动化59-数据驱动(ddt)

    前言 在设计用例的时候,有些用例只是参数数据的输入不一样,比如登录这个功能,操作过程但是一样的.如果用例重复去写操作过程会增加代码量,对应这种多组数据的测试用例,可以用数据驱动设计模式,一组数据对应一 ...

  6. Selenium2+python自动化52-unittest执行顺序

    前言 很多初学者在使用unittest框架时候,不清楚用例的执行顺序到底是怎样的.对测试类里面的类和方法分不清楚,不知道什么时候执行,什么时候不执行. 本篇通过最简单案例详细讲解unittest执行顺 ...

  7. Selenium2+python自动化59-数据驱动(ddt)【转载】

    前言 在设计用例的时候,有些用例只是参数数据的输入不一样,比如登录这个功能,操作过程但是一样的.如果用例重复去写操作过程会增加代码量,对应这种多组数据的测试用例,可以用数据驱动设计模式,一组数据对应一 ...

  8. Selenium2+python自动化52-unittest执行顺序【转载】

    前言 很多初学者在使用unittest框架时候,不清楚用例的执行顺序到底是怎样的.对测试类里面的类和方法分不清楚,不知道什么时候执行,什么时候不执行. 本篇通过最简单案例详细讲解unittest执行顺 ...

  9. Selenium2+python自动化20-Excel数据参数化【转载】

    前言 问: Python 获取到Excel一列值后怎么用selenium录制的脚本中参数化,比如对登录用户名和密码如何做参数化? 答:可以使用xlrd读取Excel的内容进行参数化.当然为了便于各位小 ...

随机推荐

  1. Copy 与MutableCopy的区别

    NSString *string = @"origion"; NSString *stringCopy = [string copy]; NSMutableString *stri ...

  2. Assertion failure in -[UITableView _classicHeightForRowAtIndexPath:], /SourceCache/UIKit_Sim/UIKit-3318/UITableView.m:10772

    Assertion failure in -[UITableView _classicHeightForRowAtIndexPath:], /SourceCache/UIKit_Sim/UIKit-3 ...

  3. iOS AVCaptureSession 小视频开发总结,支持设备旋转

    iOS开发中当我们想要自定义相机拍照或摄像界面时,UIImagePickerController无法满足我们的需求,这时候我们可以使用AVFoundation.framework这个framework ...

  4. js模版引擎handlebars.js实用教程——with-进入到某个属性(进入到某个上下文环境)

    返回目录 <!DOCTYPE html> <html> <head> <META http-equiv=Content-Type content=" ...

  5. 25个有用的jQuery日历和日期选取插件

    jQuery被认为是最好的JavaScript库,因为它简单易用.灵活,并有大量的插件.本文介绍25个非常不错的jQuery日历和日期选取插件,希望对各位有用. 1. Simple JQuery Da ...

  6. BZOJ 3389&colon; &lbrack;Usaco2004 Dec&rsqb;Cleaning Shifts安排值班

    题目 3389: [Usaco2004 Dec]Cleaning Shifts安排值班 Time Limit: 1 Sec  Memory Limit: 128 MB Description      ...

  7. Python内置函数&lpar;52&rpar;——range

    英文文档: range(stop) range(start, stop[, step]) Rather than being a function, range is actually an immu ...

  8. ubuntu两个conda安装和切换

    1. 下载anaconda2安装,一路默认,注意添加/home/wang/.bashrc选择yes 2. 在/home/wang/envs/py3安装anaconda3,其他同anaconda2 3. ...

  9. Java变成思想总结

    Java容器 collection一个独立的元素序列,这些元素都服从一条或多条规则.list必须按照插入的顺序保存元素,set不能有重复元素,queue按照排队的顺序确定对象产生的顺序.map一组成对 ...

  10. Trident简介

    1.引入 0.7版本:多条记录封装成批量,引入事务控制. 0.9版本:丢弃事务API,开始基于Storm之上的框架. 2.介绍 3.批次划分与事务实现 二:事务管理 4.事务处理机制 不透明事务:增加 ...