expected_conditions(EC) 判断元素的操作

49 篇文章 9 订阅
6 篇文章 0 订阅

expected_conditions(EC) 判断元素的操作

面试的时候经常会被问到,如何判断一个元素是否存在,如何判断alert弹窗出来了,如何判断动态的元素等等一系列的判断,在selenium的expected_conditions模块收集了一系列的场景判断方法。

expected_conditions是selenium的一个模块,主要用于对页面元素的加载进行判断,包括元素是否存在,可点击等等。
expected_conditions的使用场景一般有两种:
1. 直接在断言中使用。
2. 与WebDriverWait配合使用,显示等待页面上元素出现或者消失。

expected_conditions导入
一般情况下,我们在使用expected_conditions模块时都会对其进行重命名,通过as关键字对其命名为EC。
1. 导包:from selenium.webdriver.support import expected_conditions as EC
2. EC模块单独使用语法:
EC.方法(参数)(driver)
EC.方法(参数).__call__(driver)

expected_conditions常用操作

  1. title_is(title)
    title_is(title)判断网页title是否是特定文本,若完全相同则返回true,否则返回False。
  2. title_contains(title)
    title_contains(title)判断网页title是否包含特定文本,若包含则返回true,不包含返回false。

例子:

'''需求:打开https://www.baidu.com/,判断打开页面的标题是否为百度一下,你就知道;判断打开页面的标题中是否包含百度一下'''
from selenium import webdriver
from selenium.webdriver.support import expected_conditions

driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
res1 = expected_conditions.title_is('百度一下,你就知道')(driver)
res2 = expected_conditions.title_contains('百度一下').__call__(driver)
print(res1, res2)
driver.quit()
  1. presence_of_element_located(locator)
    presence_of_element_located(locator)判断一个元素存在于页面DOM树中,存在则返回元素本身,不存在则报错。
    参数locator:定位器是一个数据类型元组
    (“元素定位方式”, “方式对应的值”)
    (By.ID, “id属性值”)
  2. presence_of_all_elements_located(locator)
    presence_of_all_elements_located(locator)判断定位的元素范围内,至少有一个元素存在于页面当中,存在则以list形式返回元素本身,不存在则报错。

例子:

'''
需求:打开https://www.baidu.com,输入中秋节快乐,点击百度一下,要求先对每个元素进行判断,元素存在则再进行输入或点击的操作
'''

from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

# 打开浏览器
driver = webdriver.Chrome()
# 打开百度
driver.get('https://www.baidu.com/')
# 输入关键字
loc_search = (By.ID, 'kw')
ele_serach = EC.presence_of_element_located(loc_search)(driver)
ele_serach.send_keys('中秋节快乐')
# 点击按钮
loc_button = (By.ID, 'su')
ele_button = EC.presence_of_element_located(loc_button)(driver)
ele_button.click()
# 关闭浏览器
driver.quit()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值