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!!!
原文地址:https://www.cnblogs.com/canglongdao/p/13607490.html