Python+selenium自动化之28----EC模块之text_to_be_present_in_element
上一篇介绍selenium中一个模块expected_conditions的title_is和title_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
locator,text两个参数,分别是定位器和文本,检查指定的元素中是否存在相应的文本。
判定邮箱是否登陆成功
邮箱登陆成功后,会显示当前登陆账户的姓名或昵称,那么就可以登陆成功后判断是否存在该姓名。
Locator参数的实参为“ID"和"useralias",text参数的为姓名。
可以看到返回的结果为True。
# -*- 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("登陆失败")