前言

在做结果判断的时候,经常想判断某个元素中是否存在指定的文本,如登录后判断页面中是账号是否是该用户的用户名。

在前面的登录案例中,写了一个简单的方法,但不是公用的,在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

最新文章

  1. c语言指针疑惑[转载]
  2. webrtc初识
  3. REq,RES编码设置
  4. .ipynb文件 与ipython notebook
  5. iOS开发——高级技术&签名机制
  6. Unity发送参数给iOSNative并响应
  7. 【风马一族_Java】java的一种IDE
  8. Android 拨号器的简单实现
  9. centos 6.4 FTP安装和配置
  10. Eclipse建筑物SSH(struts-2.2.3 + spring-2.5.6 + hibernate-3.6.8)相框-随着源代码
  11. Windows socket之最简单的socket程序
  12. 利用OpenSSL创建证书链并应用于IIS7
  13. layer 弹出在 iframe内部弹出不居中是原因
  14. stl string 容器的使用
  15. java使用synchronized与Semaphore解决生产者消费者问题对比
  16. 用同一台PC的两个网口实现Iperf的server端和client端
  17. vue指令
  18. ODAC(V9.5.15) 学习笔记(四)TCustomDADataSet(2)
  19. 根据拼音首字母进行过滤的combobox
  20. Android adb logcat使用技巧

热门文章

  1. DFS(1)——hdu1518Square
  2. ArcGIS Engine开发中利用GP工具时常出现的错误
  3. 关于Assert
  4. Sigar应用
  5. JavaScript选择打开手机网站还是电脑网站
  6. 2017 Multi-University Training Contest - Team 3 Kanade's trio(字典树+组合数学)
  7. 如何使用Eclipse调试framework
  8. 两个神奇的函数~~~sscanf、atoi
  9. 修改centos的源
  10. js 日期获去及格式化