软件测试学习笔记丨Selenium学习笔记:常用页面信息对比方法expected_conditions

本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/22514
本文为霍格沃兹测试开发学社的学习经历分享,写出来分享给大家,希望有志同道合的小伙伴可以一起交流技术,一起进步~
说明:本篇博客基于selenium 4.1.0

expected_conditions介绍

expected_conditions是selenium的一个模块(简称EC),提供了一系列的对比页面信息的方法

expected_conditions作用

  1. expected_conditions可结合WebDriverWait中的until()和until_not()中的方法,完成显示等待
  2. expected_conditions可用于页面断言,判断用例执行成功还是失败

expected_conditions使用方法

expected_conditions返回值为函数对象,需要传入driver才能返回最终值
expected_conditions函数通用结构:

def method(*args):def _predicate(driver):...return _predicate

使用方式举例:

result = EC.title_is('企业微信')(driver)

备注:WebDriverWait中的until()和until_not()会自动传入driver,不需要自己传入

expected_conditions操作列表

备注:注意传入参数,locator表示元素定位信息,element表示元素对象

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditionsdriver = webdriver.Chrome()
driver.get('https://work.weixin.qq.com/')
time.sleep(5)locator = (By.CSS_SELECTOR, '[data-js-click-report-log="79506103,web_first_khq_click"]')
element = driver.find_element(*locator)
EC = expected_conditions                  # expected_conditions简写EC# 对比页面标题:对比driver.title与传入值
# EC.title_is('标题内容')             # 判断:'标题内容' == driver.title
# EC.title_contains('标题内容')       # 判断:'标题内容' in driver.title# 对比url
# EC.url_to_be('url')             # 判断:'url' == driver.current_url
# EC.url_changes('url')           # 判断:'url' != driver.current_url
# EC.url_contains('url')          # 判断:'url' in driver.current_url
# EC.url_matches('正则表达式')      # 判断:driver.current_url是否匹配正则表达式# 对比窗口
# n = 3
# EC.number_of_windows_to_be(n)    # 判断:当前窗口数量 = n# 对比frame
# EC.frame_to_be_available_and_switch_to_it(locator)  # 元素所在frame可切入则切入并返回True,否则返回False# 对比弹窗
# EC.alert_is_present()   # 有弹窗则返回弹窗对象,否则返回False# 判断元素是否出现:指元素在网页中是否存在,不关注元素状态
# EC.presence_of_element_located(locator)        # 返回元素对象
# EC.presence_of_all_elements_located(locator)   # 返回元素列表# 判断元素状态
# EC.element_to_be_clickable(locator)    # 元素可点击则返回元素对象,否则返回False
# EC.element_to_be_clickable(element)    # 元素可点击则返回元素对象,否则返回False# EC.element_to_be_selected(element)                          # 元素是否被选中
# EC.element_located_to_be_selected(locator)                  # 元素是否被选中
# EC.element_selection_state_to_be(element, True)             # 元素是否被选中
# EC.element_located_selection_state_to_be(locator, True)     # 元素是否被选中
# EC.staleness_of(element)                                    # 元素不存在# 判断元素是否可见(注意传入参数)
# EC.visibility_of(element)                       # 元素可见则返回元素对象,否则返回False
# EC.visibility_of_element_located(locator)       # 元素可见则返回元素对象,否则返回False
# EC.visibility_of_all_elements_located(locator)  # 全部可见则返回元素列表,否则返回False
# EC.visibility_of_any_elements_located(locator)  # 返回可见元素列表,无则返回空列表# EC.invisibility_of_element(element))            # 元素不可见则返回元素对象,否则返回False
# EC.invisibility_of_element_located(locator)     # 元素不可见则返回元素对象,否则返回False# 对比元素属性值
# EC.text_to_be_present_in_element(locator, '文本内容')                  # '文本内容' in element.text
# EC.text_to_be_present_in_element_value(locator, '文本内容')            # '文本内容' in element.get_attribute("value")
# EC.text_to_be_present_in_element_attribute(locator, '属性', '属性值')   # '属性值'  in element.get_attribute("属性")
# EC.element_attribute_to_include(locator, '属性')                       # element.get_attribute("属性") is not None# 组合判断
# li = [EC.title_is('标题内容'), EC.url_to_be('url')]   # expected_conditions列表:['EC1', 'EC2', '...']
# EC.any_of(li)                                        # 或:任意一个满足则返回True,否则返回False
# EC.all_of(li)                                        # 且:全部都满足则返回True,否则返回False
# EC.none_of(li)                                       # 非:全部都不满足则返回True,否则返回Falsedriver.quit()

在这里插入图片描述

推荐学习

【霍格沃兹测试开发】7天软件测试快速入门带你从零基础/转行/小白/就业/测试用例设计实战

【霍格沃兹测试开发】最新版!Web 自动化测试从入门到精通/ 电子商务产品实战/Selenium (上集)

【霍格沃兹测试开发】最新版!Web 自动化测试从入门到精通/ 电子商务产品实战/Selenium (下集)

【霍格沃兹测试开发】明星讲师精心打造最新Python 教程软件测试开发从业者必学(上集)

【霍格沃兹测试开发】明星讲师精心打造最新Python 教程软件测试开发从业者必学(下集)

【霍格沃兹测试开发】精品课合集/ 自动化测试/ 性能测试/ 精准测试/ 测试左移/ 测试右移/ 人工智能测试

【霍格沃兹测试开发】腾讯/ 百度/ 阿里/ 字节测试专家技术沙龙分享合集/ 精准化测试/ 流量回放/Diff

【霍格沃兹测试开发】Pytest 用例结构/ 编写规范 / 免费分享

【霍格沃兹测试开发】JMeter 实时性能监控平台/ 数据分析展示系统Grafana/Docker 安装

【霍格沃兹测试开发】接口自动化测试的场景有哪些?为什么要做接口自动化测试?如何一键生成测试报告?

【霍格沃兹测试开发】面试技巧指导/ 测试开发能力评级/1V1 模拟面试实战/ 冲刺年薪百万!

【霍格沃兹测试开发】腾讯软件测试能力评级标准/ 要评级表格的联系我

【霍格沃兹测试开发】Pytest 与Allure2 一键生成测试报告/ 测试用例断言/ 数据驱动/ 参数化

【霍格沃兹测试开发】App 功能测试实战快速入门/adb 常用命令/adb 压力测试

【霍格沃兹测试开发】阿里/ 百度/ 腾讯/ 滴滴/ 字节/ 一线大厂面试真题讲解,卷完拿高薪Offer !

【霍格沃兹测试开发】App自动化测试零基础快速入门/Appium/自动化用例录制/参数配置

【霍格沃兹测试开发】如何用Postman 做接口测试,从入门到实战/ 接口抓包(最新最全教程)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/57605.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开拓鸿蒙测试新境界,龙测科技引领自动化测试未来

在当今科技舞台上,鸿蒙 OS 以非凡先进性强势登场,打破传统操作系统格局,为软件测试领域带来全新机遇与艰巨挑战。 一、鸿蒙 OS 的辉煌崛起 (一)壮丽发展历程与卓越市场地位 鸿蒙 OS 的发展如波澜壮阔的史诗。2023 年…

JavaScript进阶:手写代码挑战(一)

​🌈个人主页:前端青山 🔥系列专栏:JavaScript篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来JavaScript篇专栏内容:JavaScript手写代码篇 #1024程序员节|征文# 在现代Web开发中&#xff0c…

中国移动机器人将投入养老场景;华为与APUS共筑AI医疗多场景应用

AgeTech News 一周行业大事件 华为与APUS合作,共筑AI医疗多场景应用 中国移动展出人形机器人,预计投入养老等场景 作为科技与奥富能签约,共拓智能适老化改造领域 天与养老与香港科技园,共探智慧养老新模式 中山大学合作中国…

[Python学习日记-53] Python 中的正则表达式模块 —— re

[Python学习日记-53] Python 中的正则表达式模块 —— re 简介 re 模块 练习 简介 我们在编程的时候经常会遇到想在一段文字当中找出电话号码、身份证号、身高、年龄之类的信息,就像下面的数据一样 # 文件名:美丽学姐联系方式.txt 姓名 地区 …

微信小程序美团点餐

引言:外卖已经成为了都市人的必备,在无数个来不及(懒得)做饭的时刻拯救孤单寂寞的胃。美团外卖无疑是外卖届的领头羊,它的很多功能与设计都值得我们学习。本文将从五个方面,对美团外卖展开产品分析&#xf…

【ArcGIS Pro实操第4期】绘制三维地图

【ArcGIS Pro实操第4期】绘制三维地图 ArcGIS Pro绘制三维地图-以DEM高程为例参考 如何使用ArcGIS Pro将栅格数据用三维的形式进行表达?在ArcGIS里可以使用ArcScene来实现,ArcGIS Pro实现原理跟ArcScene一致。由于Esri未来将不再对ArcGIS更新&#xff0c…

深入浅出神经网络:从基础原理到高级应用

第5章 神经网络 更加详细内容可以看这篇文章 5.1 神经元模型 神经网络的基本单元是神经元模型。神经元模拟了生物神经元的行为,通过接收输入信号,进行加权求和,然后经过激活函数输出结果。 数学上,一个简单的神经元可以表示为&…

pipeline开发笔记

pipeline开发笔记 jenkins常用插件Build Authorization Token Root配置GitLab的webhooks(钩子)配置构建触发器--示例 piblish over sshBlue OceanWorkspace Cleanup PluginGit插件PipelineLocalization: Chinese (Simplified) --中文显示Build Environment Plugin 显示构建过程…

ArcGIS 10.8 安装教程

目录 一、ArcGIS10.8二、安装链接三、安装教程四、ArcGIS实战 (一)ArcGIS10.8 1. 概述 ArcGIS 10.8是由美国Esri公司开发的GIS平台,用于处理、分析、显示和管理地理数据,并实现数据共享。它具有新特性和功能,性能更…

iOS MPNowPlayingInfoCenter 通知栏、锁屏 显示当前播放的媒体信息

前言 MPNowPlayingInfoCenter 是 iOS 框架 MediaPlayer 中的一个类,主要用于管理锁屏界面、控制中心、通知中心中显示的“当前播放”媒体信息。它允许开发者向用户展示正在播放的音乐或媒体信息,并控制媒体播放。 通过 MPNowPlayingInfoCenter&#xf…

新电脑Win11家庭中文版跳过联网激活方法(教程)

预装Win11家庭中文版的新电脑,如何跳过联网激活;由于微软限制必须要联网激活,需要使用已有的微软账户登入或者注册新的微软账户后才可以继续开机使用,Win11联网后系统会自动激活。下面介绍一下初次开机初始化电脑时如何跳过联网激…

猫咪掉毛还容易应激,哪款宠物空气净化器可以吸毛且低噪?

今年的双十一第一波优惠我没有抢,因为我在犹豫我真的必须要买宠物空气净化器,但是会不会有很多副作用等等问题,让我一直不敢下手。 一直犹豫买不买是因为我家养了一只爱掉毛的小猫咪,家里每天都是想着要清理猫咪掉下来的猫毛&…

又是一年 1024

今天是 1024 程序员节,现在是一名大数据讲师,我和往常一样,依旧在讲课中度过。对于很多程序员来说,这一天也许是属于代码、调试和无数行 SQL 查询的,而对于我来说,虽然工作内容不同,却也和数据、…

软考算法——线性表、栈和队列、串、数组、矩阵和广义表

软考算法(一) 线性表定义顺序表单链表循环链表双向链表 性能分析线性表插入删除操作 栈和队列栈队列循环队列 串、数组、矩阵和广义表串串的基本操作串的存储结构 数组数组的存储地址计算 矩阵——稀疏矩阵上三角矩阵下三角矩阵 广义表 线性表 定义 线性…

设置K8s管理节点异常容忍时间

说明 每个节点上的 kubelet 需要定时向 apiserver 上报当前节点状态,如果两者间网络异常导致心跳终端,kube-controller-manager 中的 NodeController 会将该节点标记为 Unknown 或 Unhealthy,持续一段时间异常状态后 kube-controller-manage…

软考——计算机网络概论

文章目录 🕐计算机网络分类1️⃣通信子网和资源子网2️⃣网络拓扑结构3️⃣ 计算机网络分类3:LAN MAN WAN4️⃣其他分类方式 🕑OSI 和 TCP/IP 参考模型1️⃣OSI2️⃣TCP/IP🔴TCP/IP 参考模型对应协议 3️⃣OSI 和 TCP/IP 模型对应…

AUTOSAR_EXP_ARAComAPI的6章笔记(4)

☞返回总目录 相关总结:《AUTOSAR 自适应应用中原始数据流传输的使用方法》总结 6.4 原始数据流传输的使用方法 本章描述了原始数据流(RawDataStreams)在 AUTOSAR 自适应应用程序中的使用方法。 目前,原始数据流传输在单播 / …

WSL2-轻量级AI训练场景最佳生产环境

WSL2 只适用于 Win 10 、Win11 在运行 AI 软件、AI 模型训练,Linux 是最佳的操作系统。 在运行各种软件,如:Stable Diffusion Web UI 等,使用 Docker 容器运行也更方便后期的快速复用,同样的 Docker 容器在 Linux 中…

基于springboot的网上服装商城推荐系统的设计与实现

基于springboot的网上服装商城推荐系统的设计与实现 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:idea 源码获取&#xf…

安灯系统助力汽车零部件工厂快速解决生产异常

在汽车零部件制造领域,高效的生产管理和快速解决异常情况是确保产品质量和生产进度的关键。而安灯系统的应用,正为汽车零部件工厂带来了全新的变革,助力其快速解决生产异常。 汽车零部件工厂的生产报工产线看板直观地反映出生产的各项关键数据…