本文介紹如何通過Selenium方法來獲取某一個元素的text屬性值。在很多自動化測試腳本中,需要多次獲取元素的text值,拿過來進行對比和匹配。例如,在一個登陸界面,如果不輸入用戶名和密碼,直接點擊登錄,肯定會有相關錯誤提醒。這個錯誤,我們需要通過selenium抓取出來,和需求說明文檔中的描述去進行匹配,如果匹配,測試成功,否則失敗。
這里用百度登錄舉例:
需要通過Selenium腳本去自動判斷是否顯示錯誤文字“請您填寫手機/郵箱/用戶名”
相關腳本代碼如下:
# coding=utf-8
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(6)
driver.get("http://www.baidu.com/")
time.sleep(1)
driver.find_element_by_xpath("//*[@id='u1']/a[7]").click()
time.sleep(1)
driver.find_element_by_xpath("//*[@id='TANGRAM__PSP_8__submit']").click()
# 斷言方法一
try :
error_message = driver.find_element_by_xpath("//*[@id='TANGRAM__PSP_8__error' and text()='請您填寫手機/郵箱/用戶名']").is_displayed()
print ("Test pass. the error message is display.")
except Exception as e:
print ("Test fail.", format(e))
# 斷言方法二,本文重點介紹方法
error_mes = driver.find_element_by_xpath("//*[@id='TANGRAM__PSP_8__error']").text
try:
assert error_mes == u'請您填寫手機/郵箱/用戶名'
print ('Test pass.')
except Exception as e:
print ("Test fail.", format(e))
總結:
要獲取到目標元素的text的值,需要定義一個目標元素element,然后通過element.text方法得到字符串,注意不是element.text(),這個方法是沒有帶小括號的。上面介紹了兩個方法,方法一是,直接把字段寫入XPath表達式,如果通過該XPath能定位到元素,說明這個錯誤字段已經在頁面顯示;方法二是通過該目標元素節點,然后通過element.text得到值,在拿得到的text值取和期待的結果去字符串匹配。建議在自動化測試腳本開發中,采用第二個方法。