当前位置: 首页 > article >正文

expected_conditions(EC) 判断元素的操作

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()

http://www.kler.cn/news/310570.html

相关文章:

  • OpenCVSharp直方图和傅里叶变换介绍
  • 2024.9.15 Python模式识别新国大EE5907,总结PCA,LDA,Clustering,GMMboosting,SVM
  • istio中serviceentry结合egressgateway的使用
  • 求和(2)
  • C# 禁止程序重复启动
  • 科技创新驱动未来发展
  • Qt 内嵌 Python 解释器动态调试
  • canvas和svg的区别是什么?它们的应用场景是什么?
  • github域名与IP变更导致无法推送分支问题的解决
  • QT信号槽原理是什么,如何去使用它?
  • POSIX信号量以及利用POSIX信号量实现基于循环队列的高效生产者消费者模型
  • 【iOS】dismiss多级的方法
  • 《A++ 敏捷开发》- 26 根与翼
  • 如何使用自动化测试工具来提高API测试的效率?
  • html详细知识
  • Android中的单例模式
  • 怎么给儿童掏耳朵比较安全?安全儿童可视挖耳勺推荐
  • 价值、创新、社区与财富效应:Match项目的成功启示
  • 【网络安全】PHP配置注入漏洞
  • php环境搭建教程
  • float字节序和主机序 网络序传输
  • 优化算法(三)—模拟退火算法(附MATLAB程序)
  • Vue学习记录之四(watch侦听器和watchEffect高级侦听器)
  • Window Server 2019+ 安装 Docker
  • 【数据分析】利用Python+AI+工作流实现自动化数据分析-全流程讲解
  • Vue3流程图插件-Vue Flow
  • supermap iclient3d for cesium中的平移,旋转
  • Linux嵌入式相机 — 项目总结
  • ArcGIS Pro SDK (十四)地图探索 4 书签
  • C语言--结构体(学习笔记)