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

时间: 2024-10-13 17:01:15

Selenium2+python自动化49-判断文本(text_to_be_present_in_element)【转载】的相关文章

Selenium2+python自动化52-unittest执行顺序【转载】

本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/unittest/ 前言 很多初学者在使用unittest框架时候,不清楚用例的执行顺序到底是怎样的.对测试类里面的类和方法分不清楚,不知道什么时候执行,什么时候不执行. 本篇通过最简单案例详细讲解unittest执行顺序. 一.案例分析 1.先定义一个测试类,里面写几个简单的case # coding:utf-8import unittestimport timeclass Test

Selenium2+python自动化20-Excel数据参数化【转载】

前言 问: Python 获取到Excel一列值后怎么用selenium录制的脚本中参数化,比如对登录用户名和密码如何做参数化? 答:可以使用xlrd读取Excel的内容进行参数化.当然为了便于各位小伙伴们详细的了解,小编一一介绍具体的方法. 一.编写登录用例: Step1:访问http://www.effevo.com (打个广告effevo是搜狗自研发的项目管理系统,完全免费,非常好用)Step2:点击页面右上角的登录Step3:输入用户名和密码后登录Step4:检查右上角的头像是否存在实现

Selenium2+python自动化21-TXT数据参数化【转载】

前言      在17篇我们讲了excel数据的参数化,有人问了txt数据的参数化该怎么办呢,下面小编为你带你txt数据参数化的讲解 一.以百度搜索为例,自动搜索五次不同的关键字.输入的数据不同从而引起输出结果的变化. 测试脚本: #coding=utf-8from selenium import webdriverimport unittest, time, osclass Login(unittest.TestCase): def test_login(self): source = ope

Selenium2+python自动化16-alert\confirm\prompt【转载】

前言 不是所有的弹出框都叫alert,在使用alert方法前,先要识别出到底是不是alert.先认清楚alert长什么样子,下次碰到了,就可以用对应方法解决. alert\confirm\prompt弹出框操作主要方法有: text:获取文本值 accept() :点击"确认" dismiss() :点击"取消"或者叉掉对话框 send_keys() :输入文本值 --仅限于prompt,在alert和confirm上没有输入框 一.认识alert\confirm\

Selenium2+python自动化32- 测试报告的易读性【转载】

前言 前一篇已经介绍了报告的生成方法,本篇小编优化一下测试报告,使测试报告便于大多数阅读.虽然在我们在测试用例开发时为每个用例添加了注释,但测试报告一般是给非测试人员阅读的,如果能在报告中为每一个测试用例添加说明,那么将会使报告更加易于阅读. 下面还是以百度为例: 一.打开我们的测试用例文件,为每一个测试用例(方法)下面添加注释,如下: #coding=utf-8from selenium import webdriverfrom selenium.webdriver.common.by imp

Selenium2+python自动化40-cookie相关操作【转载】

前言 虽然cookie相关操作在平常ui自动化中用得少,偶尔也会用到,比如登录有图形验证码,可以通过绕过验证码方式,添加cookie方法登录. 登录后换账号登录时候,也可作为后置条件去删除cookie然后下个账号登录 一.获取cookies:get_cookies() 1.获取cookies方法直接用:get_cookies() 2.先启动浏览器,获取cookies,打印出来发现是空:[] 3.打开博客首页后,重新获取cookies,打印出来,就有值了 二.登录后的cookies 1.先登录博客

Selenium2+python自动化72-logging日志使用【转载】

前言 脚本运行的时候,有时候不知道用例的执行情况,这时候可以加入日志,这样出现问题后方便查阅,也容易排查哪些用例执行了,哪些没有执行. 一.封装logging模块 1.关于logging日志的介绍,我这里就不详细讲解了,主要有两大功能,一个是控制台的输出,一个是保存到本地文件 2.先封装logging模块,保存到common文件夹命名为logger.py,以便于调用 # coding:utf-8import logging,time,os# 这个是日志保存本地的路径log_path = "D:\

Selenium2+python自动化24-js处理富文本(带iframe)【转载】

前言 上一篇Selenium2+python自动化23-富文本(自动发帖)解决了富文本上iframe问题,其实没什么特别之处,主要是iframe的切换,本篇讲解通过js的方法处理富文本上iframe的问题 一.加载配置 1.打开博客园写随笔,首先需要登录,这里为了避免透露个人账户信息,我直接加载配置文件,免登录了. 不懂如何加载配置文件的,看这篇Selenium2+python自动化18-加载Firefox配置 二.打开编辑界面 1.博客首页地址:bolgurl = "http://www.cn

Selenium2+python自动化23-富文本(自动发帖)【转载】

前言 富文本编辑框是做web自动化最常见的场景,有很多小伙伴遇到了不知道无从下手,本篇以博客园的编辑器为例,解决如何定位富文本,输入文本内容 一.加载配置 1.打开博客园写随笔,首先需要登录,这里为了避免透露个人账户信息,我直接加载配置文件,免登录了. 不懂如何加载配置文件的,看这篇Selenium2+python自动化18-加载Firefox配置 二.打开编辑界面 1.博客首页地址:bolgurl = "http://www.cnblogs.com/" 2.我的博客园地址:yoyob