Selenium3+python3自動化(八)--登入案例、獲取某元素的某屬性的值.get_attribute("屬性名")
阿新 • • 發佈:2020-08-28
前言
前面幾篇都是講一些基礎的定位方法,沒具體的案例,下面以開源系統OPMS登入為例。可參考:linux下搭建opms專案
一、登入
1.先開啟瀏覽器
2.開啟opms登入頁:http://ip:8088/login
3.查詢元素之前可以先設定元素等待:implicitlywait()
4.輸入使用者名稱、密碼,然後點登入
參考程式碼:
# coding:utf-8 from selenium import webdriver driver=webdriver.Chrome() driver.get("http://47.98.186.11:8088/login") driver.implicitly_wait(10) driver.find_element_by_name("username").send_keys("libai") driver.find_element_by_xpath("//div[@class='login-wrap']/input[2]").send_keys("123456") driver.find_element_by_xpath("//button[@type='submit']").click()
二、檢查結果
1.登入完成之後,需要檢查是否登入成功,這裡就需要有個檢查點,我這邊選擇右上角的賬號,檢視是不是剛才登入的賬號
2.定位到右上角連結,然後取.text方法獲取這個元素的文字屬性
3.判斷獲取的值,與期望結果是否一致
4.符合預期結果測試通過
5.不符合預期結果測試不通過
三、退出登入
1.測試完之後,別忘了最後退出登入
2.退出登入後,關閉瀏覽器
參考程式碼:
# coding:utf-8 from selenium import webdriver import time name="libai" passwd="123456" host="http://47.98.186.11:8088" driver=webdriver.Chrome() # driver.maximize_window() driver.get(host+"/login") driver.implicitly_wait(10) driver.find_element_by_name("username").send_keys(name) driver.find_element_by_xpath("//div[@class='login-wrap']/input[2]").send_keys(passwd) driver.find_element_by_xpath("//button[@type='submit']").click() t=driver.find_element_by_xpath("//ul[@class='notification-menu']/li[2]/a").text if t==name: print("登入成功") else: print("登入失敗") driver.find_element_by_xpath("//ul[@class='notification-menu']/li[2]/a").click() time.sleep(3) a=driver.find_element_by_xpath("//li[@class='open']/ul/li[6]/a").get_attribute("href") time.sleep(2) driver.get(a) time.sleep(2) driver.close()
---------未解插曲-------
直接定位到退出,點選,報錯:selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable,百度結果:將chromedriver複製到指令碼目錄下,仍然不可以。
--------------------------------------------------
四、登入函式
1.雖然上面的程式碼實現了登入,但整個程式碼跟記流水賬一樣,沒什麼可讀性。
2.我們可以把登入和退出寫成兩個函式,這樣看起來更舒服一點。
3.把登入賬號和密碼引數化。
# coding:utf-8 from selenium import webdriver import time def login(driver,host,name,passwd): driver.get(host+"/login") driver.find_element_by_name("username").send_keys(name) driver.find_element_by_name("password").send_keys(passwd) driver.find_element_by_xpath("//div[@class='login-wrap']/button").click() time.sleep(3) a=driver.find_element_by_xpath("//div[@class='menu-right']/ul/li[2]/a").text if a==name: return True else: return False def logout(driver): driver.find_element_by_xpath("//div[@class='menu-right']/ul/li[2]/a").click() time.sleep(2) h=driver.find_element_by_xpath("//li/ul/li[6]/a").get_attribute('href') print(type(h),h) time.sleep(2) driver.get(h) if __name__=="__main__": host="http://47.98.186.11:8088" driver=webdriver.Chrome() name='libai' passwd='123456' r=login(driver,host,name,passwd) if r: print("登入成功") logout(driver) else: print("登入失敗") driver.close()
執行結果:
獲取某元素的某屬性的值
a=driver.find_element_by_xpath("//li[@class='open']/ul/li[6]/a").get_attribute("href")