SeleniumLibrary4.5.0 关键字详解(三)

2023-11-20


SeleniumLibrary4.5.0 关键字详解(三)

库版本:4.5.0
库范围:全局
命名参数:受支持

简介
SeleniumLibrary是Robot Framework的Web测试库。

本文档说明了如何使用SeleniumLibrary提供的关键字。 有关安装,支持等信息,请参见 python3.9.0 + robotframework + selenium3 实例体验。

有关robotframework框架的更多信息,请参见 https://blog.csdn.net/mask5726/category_10537277.html。

SeleniumLibrary在内部使用Selenium WebDriver模块来控制Web浏览器。 有关常规Selenium的更多信息,请参见Selenium。

内容列表
1、元素定位
2、浏览器和窗口
3、超时,等待和延迟
4、运行故障功能
5、布尔参数
6、webDriver事件
7、线程支持
8、插件
9、引入
11、关键字

超时、等待和延迟
本节讨论了如何等待元素出现在网页上以及以其他方式降低执行速度的不同方式。它还说明了设置各种超时,等待和延迟时可以使用的时间格式。

超时(timeout)
SeleniumLibrary包含各种关键字,这些关键字具有可选的超时参数,该参数指定这些关键字应等待某些事件或操作的时间。这些关键字包括例如Wait …关键字和与告警相关的关键字。另外,执行异步Javascript。尽管它没有超时参数,但它使用超时来定义异步JavaScript可以运行多长时间。

这些关键字使用的默认超时可以通过使用Set Selenium Timeout关键字来全局设置,也可以在导入库时与timeout参数一起设置。有关支持的超时语法,请参见下面的时间格式。

隐式等待(Implicit wait)
隐式等待指定搜索元素时Selenium最多等待多长时间。导入库时,可以使用Set Selenium Implicit Wait关键字来设置,也可以使用implicit_wait参数来设置。有关此功能的更多信息,请参见Selenium文档。

有关支持的语法,请参见下面的时间格式。

selenium执行速度
可以通过使用Set Selenium speed关键字全局降低Selenium的执行速度。此功能旨在用于演示或调试目的。使用它来确保元素出现在页面上不是一个好主意。应改用上述超时和等待。

有关支持的语法,请参见下面的时间格式。

时间格式
所有超时和等待时间都可以以秒为单位的数字(例如0.5或42)或使用Robot Framework的时间语法(例如1.5 seconds or 1 min 30 s)来给出。有关时间语法的更多信息,请参见《 Robot Framework用户指南》。

故障运行功能

SeleniumLibrary具有方便的功能,如果其自身的任何关键字失败,它可以自动执行关键字。默认情况下,它使用Capture Page Screenshot关键字,但是在导入库时,可以通过使用Register Keyword在失败时运行关键字或与run_on_failure参数一起更改。可以使用任何导入的库或资源文件中的任何关键字。

可以通过使用特殊值NOTHING或任何被认为是错误的值(请参阅布尔参数)(例如NONE)来禁用运行失败功能。

布尔参数

一些关键字接受作为布尔值true或false处理的参数。如果将这样的参数作为字符串给出,则如果该参数为空或不区分大小写,等于false,no,off,0或none,则将其视为false。不管其他字符串的值如何,都认为它们是正确的,并且使用与Python中相同的规则测试其他参数类型。

Ture 的例子:

Set Screenshot Directory    KaTeX parse error: Expected 'EOF', got '#' at position 30: …ersist=True    #̲ 字符串通常为true. Se…{RESULTS}    persist=yes    # 与上述相同.
Set Screenshot Directory     R E S U L T S       p e r s i s t = {RESULTS}    persist= RESULTS   persist={TRUE}    # Python True为true.
Set Screenshot Directory     R E S U L T S       p e r s i s t = {RESULTS}    persist= RESULTS   persist={42}    # 非0的数字为 true.

False 的例子:

Set Screenshot Directory    KaTeX parse error: Expected 'EOF', got '#' at position 31: …rsist=False    #̲字符串false为false.…{RESULTS}    persist=no    # 另外,字符串no为false.
Set Screenshot Directory    KaTeX parse error: Expected 'EOF', got '#' at position 30: …ersist=NONE    #̲ 字符串NONE为false.…{RESULTS}    persist=KaTeX parse error: Expected 'EOF', got '#' at position 12: {EMPTY}    #̲ 空字符串为false. Se…{RESULTS}    persist=KaTeX parse error: Expected 'EOF', got '#' at position 12: {FALSE}    #̲ Python False为f…{RESULTS}    persist=${NONE}    # Python None为false.

请注意,在SeleniumLibrary 3.0之前,所有非空字符串(包括false,no和none)都被视为true。从SeleniumLibrary 4.0开始,字符串0和off被视为false。

WebDriver事件

SeleniumLibrary提供对EventFiringWebDriver的支持。有关更多详细信息,请参阅Selenium和SeleniumLibrary EventFiringWebDriver支持文档。

SeleniumLibrary 4.0中新增了EventFiringWebDriver。

EventFiringWebDriver是Selenium提供的API的侦听器类型。 EventFiringWebDriver允许侦听Selenium API调用,并允许用户在Selenium API方法之前和之后触发事件。 请参阅Selenium EventFiringWebDriver文档,支持哪些Selenium API方法以及EventFiringWebDriver的工作方式。

Selenium EventFiringWebDriver文档
类:

class selenium.webdriver.support.event_firing_webdriver.EventFiringWebDriver(driver, event_listener)[source]

A wrapper around an arbitrary WebDriver instance which supports firing events

Creates a new instance of the EventFiringWebDriver

Args:
driver : A WebDriver instance
event_listener : Instance of a class that subclasses AbstractEventListener and implements it fully or partially
例子:

from selenium.webdriver import Firefox
from selenium.webdriver.support.events import EventFiringWebDriver, AbstractEventListener

class MyListener(AbstractEventListener):
def before_navigate_to(self, url, driver):
print(“Before navigate to %s” % url)
def after_navigate_to(self, url, driver):
print(“After navigate to %s” % url)

driver = Firefox()
ef_driver = EventFiringWebDriver(driver, MyListener())
ef_driver.get(“http://www.google.co.in/”)

方法:

back()[source]

close()[source]

execute_async_script(script, *args)[source]

execute_script(script, *args)[source]

find_element(by=‘id’, value=None)[source]

find_element_by_class_name(name)[source]

find_element_by_css_selector(css_selector)[source]

find_element_by_id(id_)[source]

find_element_by_link_text(link_text)[source]

find_element_by_name(name)[source]

find_element_by_partial_link_text(link_text)[source]

find_element_by_tag_name(name)[source]

find_element_by_xpath(xpath)[source]

find_elements(by=‘id’, value=None)[source]

find_elements_by_class_name(name)[source]

find_elements_by_css_selector(css_selector)[source]

find_elements_by_id(id_)[source]

find_elements_by_link_text(text)[source]¶

find_elements_by_name(name)[source]

find_elements_by_partial_link_text(link_text)[source]

find_elements_by_tag_name(name)[source]

find_elements_by_xpath(xpath)[source]

forward()[source]

get(url)[source]

quit()[source]

wrapped_driver

Returns the WebDriver instance wrapped by this EventsFiringWebDriver

类:

class selenium.webdriver.support.event_firing_webdriver.EventFiringWebElement(webelement, ef_driver)[source]

” A wrapper around WebElement instance which supports firing events

Creates a new instance of the EventFiringWebElement

方法:

clear()[source]

click()[source]

find_element(by=‘id’, value=None)[source]

find_element_by_class_name(name)[source]

find_element_by_css_selector(css_selector)[source]

find_element_by_id(id_)[source]

find_element_by_link_text(link_text)[source]

find_element_by_name(name)[source]

find_element_by_partial_link_text(link_text)[source]

find_element_by_tag_name(name)[source]

find_element_by_xpath(xpath)[source]

find_elements(by=‘id’, value=None)[source]

find_elements_by_class_name(name)[source]

find_elements_by_css_selector(css_selector)[source]

find_elements_by_id(id_)[source]

find_elements_by_link_text(link_text)[source]

find_elements_by_name(name)[source]

find_elements_by_partial_link_text(link_text)[source]

find_elements_by_tag_name(name)[source]

find_elements_by_xpath(xpath)[source]

send_keys(*value)[source]

wrapped_element

Returns the WebElement wrapped by this EventFiringWebElement instance

通过Selenium EventFiringWebDriver文档我们看可以看到,selenium的webdriver监听器可以在webdriver的实例前和实例后执行一些操作,封装的方法可以通过id、name、css、链接、xpath、tag来识别元素。

线程支持

SeleniumLibrary不是线程安全的。这主要是因为底层的Selenium工具在一个浏览器/驱动程序实例中不是线程安全的。由于Selenium方面的限制,SeleniumLibrary提供的关键字或API不是线程安全的。

插件

SeleniumLibrary提供插件,以作为修改和添加库关键字以及修改某些内部功能的一种方式,而无需创建新的库或修改源代码。有关更多详细信息,请参见插件API文档。

插件API基于SeleniumLibrary 4.0的新版本

引入
我们在引入seleniumlibrary库的时候可以使用的参数列表:

timeout=5.0
implicit_wait=0.0
run_on_failure=Capture Page Screenshot
screenshot_root_directory=None
plugins=None
event_firing_webdriver=None

SeleniumLibrary在引入时可以使用下面的参数设置:

timeout: 与Wait …关键字一起使用的超时的默认值.
implicit_wait: 定位元素时使用的隐式等待的默认值.
run_on_failure: 定位元素时使用的隐式等待的默认值(Capture Page Screenshot是失败时进行截图).
screenshot_root_directory: 创建可能的屏幕截图或EMBED的文件夹的路径。有关EMBED的更多详细信息,请参见设置屏幕快照目录关键字。如果未提供,则使用写入日志文件的目录.
plugins: 允许使用外部Python类扩展SeleniumLibrary.
event_firing_webdriver: 使用EventFiringWebDriver包装selenium类.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SeleniumLibrary4.5.0 关键字详解(三) 的相关文章

随机推荐

  • PCI 原理

    http baike baidu com link url sTevLlZN HI7Ls3 xbui2IvQBjNlTYst1MELXXmChISxZ55VMocg NdNwnCctbLa8RMIDWBw5PxY uvAxhUQ4E8vg8
  • 成功解决FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\DELL\\Anaconda3\\pkgs\\conda

    pycharm导入包总是报错如下 然后查了一下资料发现好像是源的问题 换个源试了一下好了 指令如下 pip install i https pypi tuna tsinghua edu cn simple trusted host pypi
  • Redis高级

    目录 redis介绍安装 介绍 安装 通用命令 五大数据类型 字符串 哈希 列表 集合 有序集合 高级用法 慢查询 pipline与事务 发布订阅 Bitmap HyperLogLog GEO地理位置信息 持久化 RDB方法 AOF方案 r
  • 地址映射与共享

    跟踪地址映射过程 1 通过命令 dbg asm启动调试器 在linux 0 11运行test c文件 使其进入死循环 我们的任务就是找到i的地址并将其修改为0使test c程序退出循环 2 在命令行输入crit c使Boch暂停 一般会显示
  • Selenium Python 自动化搭建及简单用例编写

    1 首先确定自己的浏览器的当前版本号 2 下载对应版本驱动 http chromedriver storage googleapis com index html 下载完成后直接复制到py的目录下 3 调用 简单三行代码就可以简单实现我们的
  • LeetCode 98. 验证二叉搜索树(C++)

    1 题目如下 给你一个二叉树的根节点 root 判断其是否是一个有效的二叉搜索树 有效 二叉搜索树定义如下 节点的左子树只包含 小于 当前节点的数 节点的右子树只包含 大于 当前节点的数 所有左子树和右子树自身必须也是二叉搜索树 示例 1
  • uni-app项目中使用scss语法

    最近正在学习uni app开发 我先把文档浅略翻了遍 发现组件和接口几乎都是按照微信小程序走 但是视图层上的语法又是按照vue的语法走的 所以开发过程一定要注意这点 然后我想在uni app项目中使用scss语法 但是具体怎么安装呢 历经曲
  • 优秀的内存规划方法——环形缓冲区(ring buffer)

    目录 什么是环形缓冲区 使用环形buffer的好处 环形buffer的使用场景 进程间通信 网络IO 区分缓冲区是满或者是空 计数 保持一个存储单元为空 镜像指示位 buffer满了之后的操作 实时流 存储流 什么是环形缓冲区 线性缓冲区
  • 数据库初级入门sqlite3版本

    0 数据库大纲 数据库是什么 如何在在命令行使用SQL语句操作数据库 如何在C C 程序中操作数据库 1 数据库和数据库管理系统及数据库系统 数据库是一个存储数据 电子化表格 的仓库 数据库 简单来说可以看做是一个电子化的文件柜 gt 存储
  • vue element select下拉框树形多选

    components 文件下新建 SelectTree文件 index vue SelectTree index vue
  • 中关村十大AI研究院

    雷刚 发自 凹非寺 量子位 报道 公众号 QbitAI 不知你是否有同样的困惑 最近 秋季校招正在接近尾声 但意外不少非应届同学也关注起未来实习的话题 对于有志于投身AI研发的同学 有没有一些既能发论文 又贴进产业前沿 还比较近的实习机构
  • Unity3D的四种坐标系

    1 World Space 世界坐标 我们在场景中添加物体 如 Cube 他们都是以世界坐标显示在场景中的 transform position可以获得该位置坐标 2 Screen Space 屏幕坐标 以像素来定义的 以屏幕的左下角为 0
  • Wireshark抓包及DNS报文分析

    Wireshark抓包及DNS报文分析 来来来 点我进行5分钟视频学习 冲冲冲 一 抓包整体描述 第一行 帧Frame 2 指的是要发送的数据块 其中 所抓帧的序号为2 捕获字节数等于传送字节数 696字节 第二行 以太网 有线局域网技术
  • java正则表达式的语法详解及常用方法

    一 实例 今天在实现一个功能时遇到了这样一个问题 及接口传过来一个字符串 我需要判断它是一个区间还是一段文字并对其做分别处理 这里面的问题就在于我怎么去判断区间 按照数学规律区间可分为以下几种情况 M M N N N M N M N N N
  • 计算机网络重点知识(期末考研复习)

    点个关注 更多精彩持续更新为考研和期末助力 一起加油 计算机网络 第一章 思维导图 概述 计算机网络的主要性能指标 计算机网络的体系结构 OSI RM模型 TCP IP 两种模型对比 第二章 思维导图 数据通信主要指标与信道极限容量 多路通
  • java8新特性学习笔记

    使用lambda表达式排序 Collections sort temp String a String b gt return b compareTo a Collections sort temp String a String b gt
  • Camera2拍照时部分机型非常暗

    一 问题描述 1 部分手机在弱光环境下不管什么分辨率 预览和拍出来的照片都非常的暗 2 部分手机在弱光环境下 预览分辨率1920x1080 输出图片分辨率1920x1080时 预览和拍出来的照片亮度比较亮 但是在预览分辨率1920x1080
  • 重现U盘文件

    U盘中毒了 查毒后发现U盘空间还在 但是就是无法查看里面的文件 在 工具 gt 文件夹选项 中设置成 显示系统文件夹中的内容 去掉 隐藏受保护的操作系统文件 推荐 以及设置成 显示所有文件和文件夹 也不能正常显示 最近遇到很多优盘中的文件夹
  • 图像特征提取技术

    目 录 前 言 基于颜色的特征提取 1 颜色空间 2 直方图以及特征提取 基于纹理的特征提取 1 灰度共生矩阵 2 tamura纹理 基于深度神经网络的图像处理 前 言 图像特征提取属于图像分析的范畴 是数字图像处理的高级阶段 本文将从理论
  • SeleniumLibrary4.5.0 关键字详解(三)

    SeleniumLibrary4 5 0 关键字详解 三 库版本 4 5 0 库范围 全局 命名参数 受支持 简介 SeleniumLibrary是Robot Framework的Web测试库 本文档说明了如何使用SeleniumLibra