判斷文本(text_to_be_present_in_element)


判斷文本

在做結果判斷的時候,經常想判斷某個元素中是否存在指定的文本,如登錄后判斷頁面中是賬號是否是該用戶的用戶名。
在前面的登錄案例中,寫了一個簡單的方法,但不是公用的,在 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

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM