判斷文本
在做結果判斷的時候,經常想判斷某個元素中是否存在指定的文本,如登錄后判斷頁面中是賬號是否是該用戶的用戶名。
在前面的登錄案例中,寫了一個簡單的方法,但不是公用的,在 EC 模塊有個方法是可以專門用來判斷元素中存在指定文本的:
text_to_be_present_in_element。
另外一個差不多復方法判斷元素的 value 值:
text_to_be_present_in_element_value。
源碼分析
class text_to_be_present_in_element(object):
""" An expectation for checking if the given text is present in the specified element.locator, text"""
'''翻譯:判斷元素中是否存在指定的文本,參數:locator, text'''
def __init__(self, locator, text_):
self.locator = locator
self.text = text_
def __call__(self, driver):
try:
element_text = _find_element(driver,
self.locator).text
return self.text in element_text
except StaleElementReferenceException:
return False
1.翻譯:判斷元素中是否存在指定的文本,兩個參數:locator, text
2.__call__里返回的是布爾值:Ture 和 False
判斷文本
1.判斷百度首頁上,“糯米”按鈕這個元素中存在文本:貼吧
2.locator 參數是定位的方法
3.text 參數是期望的值
4.失敗案例,如果判斷失敗就會返回false
判斷value
class text_to_be_present_in_element_value(object):
"""An expectation for checking if the given text is present in the element's locator, text """
def __init__(self, locator, text_):
self.locator = locator
self.text = text_
def __call__(self, driver):
try:
element_text = _find_element(driver,
self.locator).get_attribute("value")
if element_text:
return self.text in element_text
else:
return False
except StaleElementReferenceException:
return False
1.這個方法跟上面的差不多,只是這個是判斷的 value 的值
2.這里舉個簡單案例,判斷百度搜索按鈕的 value 值
參考代碼:
# coding:utf-8 from selenium import webdriver from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Firefox() driver.get("https://www.baidu.com/") locator = ("name", "tj_trtieba") text = u"貼吧" result = EC.text_to_be_present_in_element(locator, text)(driver) print result # 判斷失敗案例 locator1 = ("name", "tj_trtieba") text1 = u"貼吧hh" result1 = EC.text_to_be_present_in_element(locator1, text1)(driver) print result1 # 判斷value值 locator2 = ("id","su") value = u"百度一下" result2 = EC.text_to_be_present_in_element_value(locator2,value)(driver) print result2