前言

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

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

转载于:https://www.cnblogs.com/yoyoketang/p/6577005.html

Selenium2+python自动化49-判断文本(text_to_be_present_in_element)相关推荐

  1. Selenium2+python自动化24-js处理富文本(带iframe)

    前言 上一篇Selenium2+python自动化23-富文本(自动发帖)解决了富文本上iframe问题,其实没什么特别之处,主要是iframe的切换,本篇讲解通过js的方法处理富文本上iframe的 ...

  2. Selenium2+python自动化43-判断title(title_is)

    前言 获取页面title的方法可以直接用driver.title获取到,然后也可以把获取到的结果用做断言. 本篇介绍另外一种方法去判断页面title是否与期望结果一种,用到上一篇Selenium2+p ...

  3. Selenium2+python自动化28-table定位

    前言 在web页面中经常会遇到table表格,特别是后台操作页面比较常见.本篇详细讲解table表格如何定位. 一.认识table 1.首先看下table长什么样,如下图,这种网状表格的都是table ...

  4. Selenium2+python自动化64-100(大结局)[已出书]

    前言 小编曾经说过要写100篇关于selenium的博客文章,前面的64篇已经免费放到博客园供小伙伴们学习,后面的内容就不放出来了,高阶内容直接更新到百度阅读了. 一.百度阅读地址: 1.本书是在线阅 ...

  5. Selenium2+python自动化54-unittest生成测试报告(HTMLTestRunner)

    前言 批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的. unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLT ...

  6. Selenium2+python自动化33-文件上传(send_keys)

    前言 文件上传是web页面上很常见的一个功能,自动化成功中操作起来却不是那么简单. 一般分两个场景:一种是input标签,这种可以用selenium提供的send_keys()方法轻松解决: 另外一种 ...

  7. Selenium2+python自动化7-xpath定位

    前言 在上一篇简单的介绍了用工具查看目标元素的xpath地址,工具查看比较死板,不够灵活,有时候直接复制粘贴会定位不到.这个时候就需要自己手动的去写xpath了,这一篇详细讲解xpath的一些语法. ...

  8. Selenium2+python自动化57-捕获异常(NoSuchElementException)

    Selenium2+python自动化57-捕获异常(NoSuchElementException) 参考文章: (1)Selenium2+python自动化57-捕获异常(NoSuchElement ...

  9. Selenium2+python自动化75-非input文件上传(SendKeys)

    前言 不少小伙伴问非input标签如何上传文档,这个本身就是一坑,无奈很多小伙伴非要跳坑里去,那就介绍一个非主流的上传文件方法吧,用第三方库SendKeys. 只支持python2环境 python3 ...

最新文章

  1. ACMNO.19 C语言-对角求和 求一个3×3矩阵对角线元素之和。 输入 矩阵 输出 主对角线 副对角线 元素和 样例输入 1 2 3 1 1 1 3 2 1 样例输出 3 7
  2. c4d完全学习手册_动态视觉设计就业班,全商业项目实训,一线制作团队10人小班授课,持续提升学习...
  3. 如何制作一款HTML5 RPG游戏引擎——第四篇,情景对话
  4. 版本变迁_一本书遍览古今中外红楼梦版本变迁
  5. 倡导国际农民丰收节贸易会-万祥军:中国-中东欧谋定启动.
  6. C#设计模式--模板方法模式(学习Learning hard 设计模式笔记)
  7. zabbix自动发现(Discovery)功能使用
  8. jzoj4739-[雅礼联考GDOI2017模拟9.2]Ztxz16学图论【LCT,树状数组】
  9. 如何使用Eclipse调试Maven构建
  10. Python3之字典生成器结合lambda实现按key/value排序
  11. mysql 表自动复制_mysql-10临时表、复制表
  12. SpringMVC——处理方法返回值的可选类型
  13. 面向对象三,约束,加密
  14. 视频时序与BT1120的关系 FPGA实现BT.1120编码
  15. Electron那些事10:本地数据库sqlite
  16. 基于Swing与JavaFx的音乐播放器——轻音
  17. 网上车管所办理驾驶证补证换证
  18. 关于Network ACLs的理解
  19. 骨龄预测代码学习(二)
  20. ZCMU-1411:喜闻乐见的a+b(大整数)

热门文章

  1. YUV通过MediaCodec编码H264
  2. java 自己的 pid_Java获取自身PID方法搜集
  3. mysql id div 1000000,mysql – 如何使用随机数据生成1000000行?
  4. mysql 命令行执行存储过程_mysql 命令行执行存储过程
  5. Spring和springMVC父子容器的原理
  6. easyui datebox 设置只读
  7. python中绝对角度是什么意思_Python中的角度转换功能
  8. 【2020模拟考试T2】【PAT乙】1032 挖掘机技术哪家强 (20分) 模拟,STL
  9. 小车故障灯亮显示大全_车辆故障灯亮了,还能继续行驶吗?该怎么做?
  10. fiddler注释_FIDDLER的使用方法及技巧总结