Selenium的核心库试图提供底层以及普适的功能. 每种语言的支持类都为常见交互提供特定的包装器, 可用于简化某些行为.
Support features
- 1: Waiting with Expected Conditions
- 2: 命令监听器
- 3: 同颜色一起工作
- 4: 线程守卫
- 5: 使用选择列表元素
1 - Waiting with Expected Conditions
Expected Conditions are used with Explicit Waits. Instead of defining the block of code to be executed with a lambda, an expected conditions method can be created to represent common things that get waited on. Some methods take locators as arguments, others take elements as arguments.
These methods can include conditions such as:
- element exists
- element is stale
- element is visible
- text is visible
- title contains specified value
2 - 命令监听器
允许您在每次发送特定 Selenium 命令时执行自定义操作
3 - 同颜色一起工作
在测试中, 您偶尔会需要验证某事物的颜色;问题是网络上的颜色定义不是个常量. 如果有一种简单的方法可以比较颜色的十六进制与RGB呈现, 或者颜色的RGBA与HSLA呈现, 岂不美哉?
不用担心有一个解决方案:Color 类!
首先, 您需要导入该类:
您现在可以开始创建颜色对象. 每个颜色对象都需要使用您颜色的字符串定义来创建. 支持的颜色定义如下:
Color类还支持在以下网址中指定的所有基本颜色定义 http://www.w3.org/TR/css3-color/#html4.
如果元素上未设置颜色, 则有时浏览器会返回“透明”的颜色值. Color类也支持此功能:
现在, 您可以安全地查询元素以获取其颜色/背景色, 任何响应都将被正确解析并转换为有效的Color对象:
然后, 您可以直接比较颜色对象:
或者, 您可以将颜色转换为以下格式之一并执行静态验证:
颜色不再是问题.
4 - 线程守卫
此类仅在Java中可用
ThreadGuard检查是否仅从创建驱动程序的同一线程中调用了驱动程序.
线程问题 (尤其是在Parallel中运行测试时)
可能遇到神秘并且难以诊断错误.
使用此包装器可以防止此类错误,
并且在发生此类情况时会抛出异常.
以下的示例模拟一种线程冲突的情况:
结果如下所示:
正如示例所示:
protectedDriver
将在主线程中创建- 我们使用Java的
Runnable
启动一个新进程, 并使用一个新的Thread
运行该进程 - 这两个
Thread
都会发生冲突, 因为主线程的内存中没有protectedDriver
ThreadGuard.protect
会抛出异常
注意:
这不能代替并发运行时使用 ThreadLocal
管理驱动程序的需求.
5 - 使用选择列表元素
Select对象现在将为您提供一系列命令,
用于允许您与 <select>
元素进行交互.
如果您使用的是 Java 或 .NET, 请确保您在代码中已正确加载所需的包. 您可以通过GitHub查看下面示例的完整代码.
请注意,此类仅适用于 HTML 元素 select
和 option
.
这个类将不适用于那些通过 div
或 li
并使用JavaScript遮罩层设计的下拉列表.
类型
选择方法的行为可能会有所不同,
具体取决于正在使用的 <select>
元素的类型.
单选
这是标准的下拉对象,其只能选定一个选项.
复选
此选择列表允许同时选定和取消选择多个选项.
这仅适用于具有 multiple
属性的 <select>
元素.
构建类
首先定位一个 <select>
元素,
然后借助其初始化一个Select
对象.
请注意, 从 Selenium 4.5 开始,
您无法针对禁用的 <select>
元素构建 Select
对象.
选项列表
共有两种列表可以被获取:
全部选项
获取 <select>
元素中所有选项列表:
选中的选项
获取 <select>
元素中所选中的选项列表.
对于标准选择列表这将只是一个包含一个元素的列表,
对于复选列表则表示包含的零个或多个元素.
选项
Select类提供了三种选择选项的方法. 请注意, 对于复选类型的选择列, 对于要选择的每个元素可以重复使用这些方法.
文本
根据其可见文本选择选项
值
根据其值属性选择选项
序号
根据其在列表中的位置选择选项
禁用的选项
具有 disabled
属性的选项可能无法被选择.
取消选择选项
只有复选类型的选择列表才能取消选择选项. 您可以对要选择的每个元素重复使用这些方法.