软件测试学习笔记丨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 年…

【vue】Mammoth.js的使用:将.docx和doc 文件转换成HTML

mammoth.convertToHtml(input, options) :把源文档转换为 HTML 文档 mammoth.convertToMarkdown(input, options) :把源文档转换为 Markdown 文档。 mammoth.extractRawText(input) :提取文档的原始文本。这将忽略文档中的所有格式…

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

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

【人工智能-初级】第6章 决策树和随机森林:浅显易懂的介绍及Python实践

文章目录 一、决策树简介二、决策树的构建原理2.1 决策树的优缺点优点缺点 三、随机森林简介3.1 随机森林的构建过程3.2 随机森林的优缺点优点缺点 四、Python实现决策树和随机森林4.1 导入必要的库4.2 加载数据集并进行预处理4.3 创建决策树模型并进行训练4.4 可视化决策树4.5…

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

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

0160____declspec(noreturn)的用法

__declspec(noreturn)的用法-CSDN博客

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

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

微信小程序美团点餐

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

Axios 基本使用

Axios 是一个异步请求技术,核心作用就是用来在页面中发送异步请求,并获取对应数据在页面中渲染 页面局部更新技术 Ajax 中文网站:https://www.kancloud.cn/yunye/axios/234845 安装: <script src"https://unpkg.com/axios/dist/axios.min.js"></script&g…

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

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

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

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

pipeline开发笔记

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

Unity3D 摄像机显示颜色详解

在Unity3D中&#xff0c;摄像机是显示游戏场景内容的核心组件&#xff0c;它负责将场景中的3D模型、材质、光照等元素转换为屏幕上的2D图像。摄像机显示颜色的过程涉及多个技术和算法&#xff0c;包括渲染管线、着色器、光照、材质以及后期处理等。以下是对这一过程的详细解析&…

ArcGIS 10.8 安装教程

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

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

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

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

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

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

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

又是一年 1024

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

Python 实现日期计算与日历格式化输出

目录 一、引言 二、需求分析 三、实现思路 四、代码实现 五、代码分析 六、测试与验证 七、总结与展望 在日常的编程中&#xff0c;我们经常会遇到与日期相关的问题&#xff0c;比如计算两个日期之间的天数差、确定某个特定日期是星期几以及格式化输出日历等。本文将详细…

内存映射实例

mmap()函数可以将内存的一块地址空间映射到进程空间的指定地址中。 同样的也可以利用其开启一块共享的内存空间。&#xff08;与malloc类似&#xff09; 开启一个子进程&#xff0c;与父进程利用mmap共同管理一块内存空间。 #include<stdlib.h> #include<sys/mman.h&…