Selenium3+python3自動化(三十五)--登入方法(引數化)
阿新 • • 發佈:2020-09-03
前言
登入這個場景在寫用例的時候經常會有,我們可以把登入封裝成一個方法,然後把賬號和密碼引數化,這樣以後用的登入的時候,只需呼叫這個方法就行了。
一、登入方法
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 Files\python37\lib\site-packages\selenium\webdriver\support\wait.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