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两个参数,分别是定位器和文本,检查指定的元素中是否存在相应的文本。

 

判定邮箱是否登陆成功

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

https://mmbiz.qpic.cn/mmbiz_png/POknAFpxeibnouWicF2QKhic66yl6GwwnS90uOd4Kh6Nder74ml1jy4kTyGfGC3q2prh4Uj0SXR5GuE2bnqxLXn2g/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

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

可以看到返回的结果为True

https://mmbiz.qpic.cn/mmbiz_png/POknAFpxeibnouWicF2QKhic66yl6GwwnS9Wuq7LOV4RWAtTqM9GPLz32HCy4IK2r5tgiaoWlvraNYeYSsOLBpxpZA/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

https://mmbiz.qpic.cn/mmbiz_png/POknAFpxeibnouWicF2QKhic66yl6GwwnS98dBACxN80fFH2VFTmI80TL0qEo3XBvVesheQtgibN4Mtgr6TTI6ibkVg/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

 

 

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

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("登陆失败")

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`EC.presence_of_element_located` 和 `EC.visibility_of_element_located` 都是 Selenium WebDriver 中 `expected_conditions` 模块中的方法,用于等待某个元素的出现或可见性。它们之间的区别在于等待的条件。 - `EC.presence_of_element_located`:等待元素的存在。它会等待元素在 DOM 树中出现,但不一定要求元素可见。例如,即使元素被隐藏或覆盖,只要它存在于 DOM 树中,该条件就会返回 True。 - `EC.visibility_of_element_located`:等待元素的可见性。它会等待元素在 DOM 树中出现,并且元素必须是可见的(即不隐藏且在视窗内)。只有当元素可见时,该条件才会返回 True。 因此,如果你只关心元素是否存在,并不关心其可见性,可以使用 `EC.presence_of_element_located` 条件。如果你需要确保元素在页面上可见,可以使用 `EC.visibility_of_element_located` 条件。 示例用法: ```python from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Chrome() wait = WebDriverWait(driver, 10) # 使用 EC.presence_of_element_located 检查元素是否存在 element_present = wait.until(EC.presence_of_element_located((By.ID, "myElement"))) # 使用 EC.visibility_of_element_located 检查元素是否可见 element_visible = wait.until(EC.visibility_of_element_located((By.ID, "myElement"))) driver.quit() ``` 上面的示例中,`EC.presence_of_element_located` 和 `EC.visibility_of_element_located` 方法都接受元素的定位方式(如 ID、Class Name、XPath 等)作为参数,并返回一个等待条件。然后,我们使用 `wait.until()` 方法来等待条件满足。如果条件在给定的时间内满足,代码将继续执行。如果超过时间仍未满足条件,将抛出 `TimeoutException` 异常。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值