当前位置: 首页 > 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/a/310570.html

相关文章:

  • 无插件H5播放器EasyPlayer.js网页web无插件播放器vue和react详细介绍
  • 有什么初学算法的书籍推荐?
  • 基于BILSTM及其他RNN序列模型的人名分类器
  • 【GPTs】MJ Prompt Creator:轻松生成创意Midjourney提示词
  • 【C++】详细介绍模版进阶,细节满满
  • 【入门篇】A+B Problem——多语言版
  • 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环境搭建教程