之前的文章介绍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 webdriverfrom selenium.webdriver.support import expected_conditions asEC
driver = webdriver.Firefox()driver.implicitly_wait(20)user = "xxx@qq.com"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("登陆失败")