Selenium2+python自動化49-判斷文本(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參數是期望的值

 

三、失敗案例

1.如果判斷失敗,就返回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()
url = "https://www.baidu.com"
driver.get(url)

locator = ("name", "tj_trnuomi")
text = u"糯米"
result = EC.text_to_be_present_in_element(locator, text)(driver)
print result
# 交流QQ群:232607095

# 下面是失敗的案例
text1 = u"糯米網"
result1 = EC.text_to_be_present_in_element(locator, text1)(driver)
print result1

locator2 = ("id", "su")
text2 = u"百度一下"
result2 = EC.text_to_be_present_in_element_value(locator2, text2)(driver)
print result2

 

 

學習過程中有遇到疑問的,可以加selenium(python+java) QQ群交流:646645429

覺得對你有幫助,就在右下角點個贊吧!

 selenium+python高級教程》已出書:selenium webdriver基於Python源碼案例

(購買此書送對應PDF版本)

 


免責聲明!

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



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