zoukankan      html  css  js  c++  java
  • Selenium3+python3自动化(三十五)--登录方法(参数化)

    前言

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

    一、登录方法

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

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

    下面以开源项目OPMS为例,搭建OPMS系统

    # coding:utf-8
    from selenium import webdriver
    driver=webdriver.Chrome()
    driver.get("http://47.98.186.11:8088/login")
    def login(user,passwd):
        driver.find_element_by_name("username").send_keys(user)
        driver.find_element("name","password").send_keys(passwd)
        driver.find_element_by_xpath("//button[@type='submit']").click()
    login("libai","123456")
    

     二、用例

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

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

    # coding:utf-8
    from selenium import webdriver
    from selenium.webdriver.support.wait import WebDriverWait
    driver=webdriver.Chrome()
    def login(url,user,passwd):
        driver.get(url)
        driver.find_element_by_name("username").send_keys(user)
        driver.find_element("name","password").send_keys(passwd)
        driver.find_element_by_xpath("//button[@type='submit']").click()
        name=WebDriverWait(driver,10).until(lambda x:x.find_element_by_xpath("//div[@class='menu-right']/ul/li[2]/a")).text
        #清除所有cookies
        driver.delete_all_cookies()
        return name==user
    url="http://47.98.186.11:8088/login"
    print(login(url,"libai","123456"))
    print(login(url,"xi","333"))
    

     运行结果:

    True
    Traceback (most recent call last):
      File "E:/study/selenium_study/a825.py", line 16, in <module>
        print(login(url,"xi","333"))
      File "E:/study/selenium_study/a825.py", line 10, in login
        name=WebDriverWait(driver,10).until(lambda x:x.find_element_by_xpath("//div[@class='menu-right']/ul/li[2]/a")).text
      File "D:Program Filespython37libsite-packagesseleniumwebdriversupportwait.py", line 80, in until
        raise TimeoutException(message, screen, stacktrace)
    selenium.common.exceptions.TimeoutException: Message: 
    

     三、判断方法

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

    2.这个时候,可以加python异常处理:try,except

    参考:https://www.runoob.com/python/python-exceptions.html

    # coding:utf-8
    from selenium import webdriver
    from selenium.webdriver.support.wait import WebDriverWait
    driver=webdriver.Chrome()
    def login(url,user,passwd):
        driver.get(url)
        driver.find_element_by_name("username").send_keys(user)
        driver.find_element("name","password").send_keys(passwd)
        driver.find_element_by_xpath("//button[@type='submit']").click()
        try:
            name=WebDriverWait(driver,10).until(lambda x:x.find_element_by_xpath("//div[@class='menu-right']/ul/li[2]/a")).text
            #清除所有cookies
            driver.delete_all_cookies()
            return name==user
        except:
            return False
    url="http://47.98.186.11:8088/login"
    print(login(url,"libai","123456"))
    print(login(url,"xi","333"))
    

     运行结果:

    True
    False
    

      

    越努力,越幸运!!! good good study,day day up!!!
  • 相关阅读:
    Windows下使用nmake编译C/C++的makefile
    poj 1228
    poj 1039
    poj 1410
    poj 3304
    poj 1113
    poj 2074
    uva 1423 LA 4255
    poj 1584
    poj 3277
  • 原文地址:https://www.cnblogs.com/canglongdao/p/13607490.html
Copyright © 2011-2022 走看看