Python+selenium自动化之28----EC模块之text_to_be_present_in_element

上一篇介绍selenium中一个模块expected_conditionstitle_istitle_contains方法。

title_is:判断当前页面的title是否完全等于(==)预期字符串,返回是布尔值

title_contains 判断当前页面的title是否包含预期字符串,返回布尔值

这里继续举例判断文本是否存在的方法text_to_be_present_in_element,比如判定进入某个页面后判定元素中是否存在指定的文本,当然结合腾讯企业邮箱的使用。

判断文本text_to_be_present_in_element

查看源码如下:

class text_to_be_present_in_element(object):
    """ An expectation for checking if the given text is present in the
    specified element.
    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

locatortext两个参数,分别是定位器和文本,检查指定的元素中是否存在相应的文本。

 

判定邮箱是否登陆成功

邮箱登陆成功后,会显示当前登陆账户的姓名或昵称,那么就可以登陆成功后判断是否存在该姓名。

Python+selenium自动化之28----EC模块之text_to_be_present_in_element

Locator参数的实参为“ID"和"useralias",text参数的为姓名。

可以看到返回的结果为True

Python+selenium自动化之28----EC模块之text_to_be_present_in_element

Python+selenium自动化之28----EC模块之text_to_be_present_in_element

 

 

# -*- coding: UTF-8 -*-
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC

driver
 = webdriver.Firefox()
driver.implicitly_wait(
20)
user = "[email protected]"
pwd = "123456"
# 打开腾讯企业邮箱
driver.get("https://exmail.qq.com/login")
# 点击 账号密码登陆
driver.find_element_by_class_name("js_show_pwd_panel").click()
# 输入 账户
driver.find_element_by_id("inputuin").send_keys(user)
# 输入 密码
driver.find_element_by_id("pp").send_keys(pwd)
# 点击  登录
driver.find_element_by_id('btlogin').click()

loc
 = ("id","useralias")
text = "xxx"
emailtext = EC.text_to_be_present_in_element(loc,text)(driver)
print(emailtext)
if emailtext:
   print("登陆成功!")
else:
   print("登陆失败")

Python+selenium自动化之28----EC模块之text_to_be_present_in_element