SeleniumLibrary4.5.0 关键字详解(一)_马克社区的博客-程序员秘密_seleniumlibrary关键字

技术标签: robotframwork  软件测试  软件测试免费  seleniumlibrary  


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、关键字

定位元素

SeleniumLibrary中所有需要与网页上的元素进行交互的关键字都带有一个通常称为locator的参数,该参数指定如何查找该元素。通常,定位器是使用下面描述的定位器语法以字符串形式给出的,但是也可以使用WebElements。

定位器语法

SeleniumLibrary支持基于不同策略(例如元素ID,XPath表达式或CSS选择器)查找元素。可以使用前缀明确指定策略,也可以隐式指定策略。

默认定位器策略

默认情况下,定位器被认为使用关键字特定的默认定位器策略。所有关键字都支持基于id和name属性的查找元素,但是某些关键字支持在上下文中有意义的其他属性或其他值。例如,单击链接支持href属性,链接文本以及常规ID和名称的添加。

例子:

Click Element example #根据ID或名称进行匹配.
Click Link example # 根据链接文本和href进行匹配.
Click Button example # 根据ID,名称或值进行匹配.
如果定位器意外地以被识别为显式定位器策略或隐式XPath策略的前缀开头,则可以使用显式默认前缀来启用默认策略。

例子:

Click Element name:foo # 查找名称为foo的元素.
Click Element default:name:foo # 使用默认策略,其值为name:foo.
Click Element //foo # 使用XPath // foo查找元素.
Click Element default: //foo # 使用默认策略使用值// foo.
使用语法strategy:value或strategy = value使用前缀指定显式定位器策略。首选前一种语法,因为后者与Robot Framework的命名参数语法相同,并且可能导致问题。分隔符周围的空格将被忽略,因此id:foo,id:foo和id:foo都是等效的。

下表列出了默认支持的定位器策略。除它们之外,还可以注册自定义定位器。

基于示例的策略匹配

Strategy Match based on Example
id Element id. id:example
name name attribute. name:example
identifier Either id or name. identifier:example
class Element class. class:example
tag Tag name. tag:div
xpath XPath expression. xpath://div[@id=“example”]
css CSS selector. css:div#example
dom DOM expression. dom:document.images[5]
link Exact text a link has. link:The example
partial link Partial link text. partial link:he ex
sizzle Sizzle selector deprecated. sizzle:div.example
jquery jQuery expression. jquery:div.example
default Keyword specific default behavior. default:example

有关默认策略如何工作的更多信息,请参见下面的默认定位器策略部分。仅当定位器值本身偶然与某些显式策略匹配时,才需要使用显式默认前缀。

不同的定位器策略有不同的优缺点。建议尽可能使用id(显式地像id:foo一样)或使用默认的定位器策略(像foo一样),因为它的语法很简单,并且对于浏览器来说,通过id定位元素很快。如果元素没有ID或ID不稳定,则需要使用其他解决方案。如果元素具有唯一的标签名称或类,则使用标签,类或css策略(例如tag:h1,class:example或css:h1.example)通常是一个简单的解决方案。在更复杂的情况下,使用XPath表达式通常是最好的方法。它们非常强大,但缺点是它们也可能变得复杂。

例子:

Click Element id:foo # Element with id ‘foo’.
Click Element css:div#foo h1 # h1 element under div with id ‘foo’.
Click Element xpath: //div[@id=“foo”]//h1 # Same as the above using XPath, not CSS.
Click Element xpath: //*[contains(text(), “example”)] # Element containing text ‘example’.
SeleniumLibrary 3.0和更高版本仅支持strategy:value语法。
使用sizzle策略或其别名jquery要求被测系统包含jQuery库。
在SeleniumLibrary 3.0之前,与表相关的关键字仅支持xpath,css和sizzle / jquery策略。
隐式XPath策略
如果定位符以//或(//开头,则该定位符被视为XPath表达式。换句话说,使用// div等效于使用显式xpath:// div。

例子:

Click Element //div[@id=“foo”]//h1
Click Element (//div)[2]

SeleniumLibrary 3.0中新增了对(//前缀的支持。

使用WebElements

除了将定位符指定为字符串之外,还可以使用Selenium的WebElement对象。这要求首先获取一个WebElement,例如,通过使用Get WebElement关键字。

${elem} = Get WebElement id:example
Click Element ${elem}
自定义定位器

如果所需的查找比通过默认定位器提供的查找更为复杂,则可以创建自定义查找策略。使用自定义定位器是一个分为两部分的过程。首先,创建一个关键字,该关键字返回应执行的WebElement:

Custom Locator Strategy [Arguments] ${browser} ${locator} ${tag} ${constraints}
e l e m e n t = E x e c u t e J a v a s c r i p t r e t u r n w i n d o w . d o c u m e n t . g e t E l e m e n t B y I d ( ′ {element}= Execute Javascript return window.document.getElementById(' element=ExecuteJavascriptreturnwindow.document.getElementById({locator}’);
[Return] ${element}

此关键字是对ID定位器基本功能的重新实现,其中$ {browser}是对WebDriver实例的引用,而$ {locator}是定位器策略的名称。要使用此定位器,必须首先使用“添加位置策略”关键字进行注册:

Add Location Strategy    custom    Custom Locator Strategy

“添加位置策略”的第一个参数指定策略的名称,并且该名称必须唯一。注册该策略后,其用法与其他定位符相同:

Click Element    custom:example

有关更多详细信息,请参见添加位置策略关键字。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lijiming2185/article/details/122917544

智能推荐

基础知识——密码学笔记(一)_you迅的博客-程序员秘密

一、密码的常用术语(一)明文:待加密信息密文:经过加密后的明文加密:明文转为密文的过程加密算法:明文转为密文的转换算法加密密钥:通过加密算法进行加密操作用的密钥解密:将密文转为明文的过程解密算法:密文转为明文的算法解密密钥:通过解密算法进行解密操作用的密钥注意:加密与解密一般是成对出现的,但是对于单项的加密(如MD5)是不存在解密过程的(二)密码分析:截获密文者试图通过分析截获的密文从...

如何导入工程到AURIX Development Studio(如基于Hightec 或TASKING创建的工程)中?_程序猿Dash的博客-程序员秘密_aurix development studio导入工程

问题:如何将Hightec工程或TASKING工程导入到AURIX Development Studio(以下简称ADS)中呢?背景:目前有很多朋友(同学)基于Hightec软件或TASKING软件,创建了一些AURIX芯片工程代码,但是由于Hightec软件或TASKING软件正式版授权很贵,所以开始转入ADS的怀抱,还好英飞凌的ADS版本更新迭代较快,最新版的软件易用性相比初代版本已经大幅提高,本文将介绍如何将普通的基于Hightec或TASKING创建的工程,导入到ADS环境中。条件:ADS1

从Scratch到Python之角色与造型_weixin_30485799的博客-程序员秘密

从Scratch到Python之角色与造型继续讲解通过python turtle从积木编程过渡到代码编程的技巧.角色是scratch中很重要的主角,每个角色可以更换不同的造型或者音效,堆叠不同的积木.如果把角色比做人,造型就是人物外观或者动作的变化,比如穿着运动服,打棒球或者走路等不同的造型.接下来我可能会很少截图,因为如果你看我文章的时候也跟着做了,那么还需要我截图么?新增角色...

Android Studio Button英文字符自动变成大写的问题_ai雅尔达的博客-程序员秘密

发现问题在5.0手机上调试的时候,发现Button上的英文字符全部变成了大写,5.0以下系统是正常的。 布局文件中: 界面显示: 分析问题1.到这里只能从源码角度去分析问题了。在AndroidXRef上看了5.0系统TextView的源码(因为Button是继承TextView的,而且Button源码也没几行,直接看TextView就可以了。)在TexViw源码里面发现了两处关键的代码:第一处

创建远程线程注入指定进程_bizhu12的博客-程序员秘密

创建远程线程使用CreateRemoteThread函数,在创建线程前还需要使用WriteProcessMemory等函数将线程函数代码和参数写到目标进程空间中去.关键APICreateRemoteThread为指定进程创建线程,线程将会在其他进程的进程空间中执行

vue watch监听对象_茅坤宝骏氹的博客-程序员秘密_vue深度监听watch

一、watch的APIvm.$watch( expOrFn, callback, [options] ) 参数: {string | Function} expOrFn {Function | Object} callback {Object} [options] {boolean} deep {boolean} immediate 返回值:{Fun...

随便推点

【backtrader源码解析31】version.py和errors.py源码解析(枯燥,仅供参考)_云金杞的博客-程序员秘密_backtrader源码

这两个文件用处都不大,而且源码写的都比较简单,一看就懂。version.py提供backtrader的版本号from __future__ import (absolute_import, division, print_function, unicode_literals)# backtrader版本号__version__ = '1.9.76.123'# backtrader版本号,元组格式__btversion__ = tuple(int

JMS(四): 点对点模型(P2P)_weixin_34367257的博客-程序员秘密

为什么80%的码农都做不了架构师?>>> ...

SpringBoot+MyBatis-plus+SpringSecurity+JWT 登入认证,实现前后端分离_在奋斗的大道的博客-程序员秘密

SpringBoot+MyBatis-plus+SpringSecurity+JWT 登入认证,实现前后端分离 1、SpringSecurity简要认证 (你是谁) 授权 (你能干什么) 攻击防护 (防止伪造身份) 其核心就是一组过滤器链,项目启动后将会自动配置。最核心的就是 Basic Authentication Filter 用来认证用户的身份,一个在spring security中一种过滤器处理一种认证方式。2、JWT 简要 JSON Web Token (JWT)是一个开放.

写公众号2个月,粉丝破千了_程序员巴士的博客-程序员秘密

缘起记得某知名人士曾说过:“写作是冷暖自知的生活方式”。2021 年 9 月初,作为刚刚踏入社会半年的、也在字节教育正式工作半年的一名前端程序员,我突然感觉自己应该要写点什么,让自己心中的一些想法留存下来,同时能够公开这些想法,与世界上的其他人进行开诚布公的讨论与交流。于是就有了 “程序员巴士” 这个公众号。每个进入计算机行业的同学,可能内心在开始的时候都有一个想要改变世界的梦。成为乔布斯,成为马斯克…我虽然也有过类似的想法,但随着学习的深入,在这个行业的时间逐渐变长,也逐渐发掘出自己的一些较为独特

java jquery上传文件,JQuery | 如何上传文件?(多文件上传)_foosa凡的博客-程序员秘密

coding在 上篇文章 中介绍了web开发中如何上传单个文件,多文件上传也类似,本文就简单介绍下。本文技术栈为:前端:HTML / Jquery后端:Java / SpringMVC / Spring boot文件上传可以通过 form表单 方式提交到后台,也可以 Ajax 模拟表单方式提交到后台,下边分别演示。form表单上传前端代码上传文件文件上传示例后端代码:@Controllerpubl...

linux使用苹果字体,Ubuntu 8.04字体美化之安装苹果丽黑字体教程(图)_Jump小酱的博客-程序员秘密

Firefox显示效果1、准备好苹果丽黑字体,推荐LiHei Pro字体,为方便,已上传到Linux公社。2、将字体放入字体文件夹,这里有个问题,必须要拥有系统管理权限才能在字体文件夹内进行文件复制等操作,下面进行详细说明。(1)字体文件夹位于/usr/share/fonts使用命令进入该文件夹:sudo gnome-open /usr/share/fonts/,建立一个新文件夹,命名为apple...

推荐文章

热门文章

相关标签