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

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

大家好,又见面了,我是全栈君。

前言

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

一、登录方法

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

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

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

 

二、用例

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

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

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-登录方法(参数化)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/108613.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Linux解压zip格式压缩包

    Linux解压zip格式压缩包Linux中zip格式的压缩与解压一、安装yuminstall-yunzip二、使用(一)、压缩常见用法有zip-q-r1.zip1.txt将当前目录下的1.txt压缩为1.zip。选项-q表示忽略执行过程,-r表示递归处理,将指定目录下的所有文件和子目录一并处理zip-q-r1.zip../1.txt将上级目录中的1.txt压缩为1.zip(二)、解压假设当前目录有一个压缩包为1.zip常见的用法有unzip1.zip直接解压到当前目录下

    2022年5月10日
    48
  • 手把手教你学习DSP_硬件设计「建议收藏」

    手把手教你学习DSP_硬件设计「建议收藏」  <<手把手教你学习DSP>>顾卫刚,感觉写的不错,将感兴趣的部分摘录下俩。1、A/D保护及矫正电路  TMS320X2812AD输入为0-3V,用上述电路可以起到钳位作用。当ADC1采样高于3V时,DQ2导通,当小于0V时,DQ1导通。在计算Vref_A和Vref_B时,因为R86的阻值太小,忽略了。2、D/A电路的设计(1)通过PWM…

    2022年6月3日
    45
  • 高通linux-串口笔记「建议收藏」

    高通linux-串口笔记「建议收藏」概述驱动:drivers/tty/serial/msm_serial_hs_lite.c:低速版本,设备树内容配置为compatible="qcom,msm-lsuart-v14";msm_serial_hs.c:高速版本, 设备树内容配置为compatible="qcom,msm-hsuart-v14"; 2.分析设备树内容 uart_cons…

    2025年11月10日
    5
  • verilog变长移位寄存器「建议收藏」

    verilog变长移位寄存器「建议收藏」verilog变长移位寄存器普通的移位寄存器可以按如下设置,下面是一个一次移动一位的移位寄存器。moduleshift_stationary(clk,dat,ctrl,shift_out);inputclk;input[15:0]dat;input[1:0]ctrl;outputreg[15:0]shift_out;always@(posedgeclk)begincase(ctrl)2’b00:begin

    2022年7月16日
    14
  • linux中setfacl命令,Linux命令之:setfacl和getfacl

    linux中setfacl命令,Linux命令之:setfacl和getfacl命令总结之:setfacl和getfaclacl:accesscontrollist,实现灵活的权限管理除了文件的所有者,所属组合其他人,可以对更多的用户设置权限acl生效顺序:所有者、自定义用户、自定义组、其他人1、首先我们查看man帮助文档说明[root@centos7sixijie]#mansetfacl根据man文档节选出来几个我们会经常用到的功能和选项加以说明:setfacl…

    2022年6月22日
    39
  • Spring Cloud Eureka集群

    Spring Cloud Eureka集群            SpringCloud基础教程[Eureka集群]NetflixEureka介绍SpirngCloudEureka使用NetflixEureka来实现服务注册与发现。它既包含了服务端组件,也包含了客户端组件,并且服务端与客户端均采用java编写,所以Eureka主要适用于通过java实现的分布式系统,或是JVM兼容语言构建的系统。E…

    2022年5月3日
    54

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号