在Robot Framweork的UI自动化测试中,元素定位主要有四种,即通过id,name,xpath和CSS定位。
一、id定位
id就好比一个人身份证,元素在 HTML 页面中的唯一标识符,因此 ID 定位方式是最常用的方式之一,通过 ID 定位元素简单快捷,且定位速度较快。
使用语法:
二、name定位
name就好比一个人的姓名, 元素的名称属性,相对于 ID,Name 属性可能不是唯一的,因此在使用 Name 定位时需要确保不会定位到多个相同 Name 的元素。
使用语法:
三、xpath定位
xpath有绝对路径和相对路径,大多数情况下都用相对路径,绝对路径不利于维护。
1、绝对路径
绝对路径定位使用完整的路径从根节点开始,直接指定元素在 DOM 树中的位置。绝对路径定位是一种较为精确的定位方式,但也较为复杂,容易受页面结构变化的影响。绝对路径以斜杠 / 开头,指定元素的所有父节点直到根节点的路径。
例如:/html/body/div[1]/div[2]/form/input[3], 这个 XPath 表示定位路径为根节点下的第一个 div,然后在这个 div 下的第二个 div,再在第二个 div 下的 form,最后在 form 下的第三个 input 元素 。
2、相对路径
相对路径定位相对于当前节点或当前节点的某个父节点,更灵活且容易维护。相对路径使用双斜杠 // 开头,表示在整个 DOM 树中查找符合条件的元素。
相对路径定位可以找元素本身或者找上级,下面举例说明:
例如://input[@id='username'], 这个XPath 表示查找整个 DOM 树中的所有 input 元素,并且其中的 id 属性等于 "username" 的元素,这个是找元素本身。
例如://input[@id='username']/span, 这个XPath 表示查找整个 DOM 树中的所有 input 元素,并且其中的 id 属性等于 "username" 的元素下的span元素,这个是通过上机找的例子。
在实际测试中,建议选择相对路径定位,并尽量避免过于复杂的绝对路径定位,以保持测试脚本的可维护性和稳定性。
3、布尔值写法
XPath 支持布尔值写法,用于在 XPath 表达式中进行条件判断和逻辑运算。
例如: //span[text()='John Doe' and @class='name'],查找文本内容为 "John Doe",且 class 属性为 "name" 的 <span> 元素。
//button[@class='submit' or @class='confirm'],查找 class 属性为 "submit" 或 "confirm" 的 <button> 元素。
四、CSS定位
CSS Selector 是一种模式匹配语法,可以通过元素的属性、类名、ID 等来定位元素。以下是一些常用的 CSS Selector 定位示例:
1、通过 ID 定位:
使用 # 符号后跟元素的 ID 来定位。 示例:#username,表示定位 ID 属性为 "username" 的元素。
2、通过 Class 定位:
使用 . 符号后跟元素的 class 名称来定位。 示例:.submit-button,表示定位 class 属性为 "submit-button" 的元素。
3、通过标签名定位:
直接使用元素的标签名来定位。 示例:input,表示定位所有 <input> 元素。
4、通过属性定位:
使用方括号 [attr=value] 来定位具有指定属性和属性值的元素。 示例:input[type="text"],表示定位所有 type 属性为 "text" 的 <input> 元素。
5、通过层级关系定位:
使用空格来表示层级关系,例如 div span 表示定位 <div> 元素下的所有 <span> 元素。 示例:div.form-group input,表示定位 <div> 元素中具有 class 为 "form-group" 的元素下的所有 <input> 元素。
6、通过组合定位:
使用 , 来组合多个 CSS Selector,表示匹配其中任何一个选择器。 示例:input[type="text"], input[type="password"],表示定位所有 type 属性为 "text" 或 "password" 的 <input> 元素。
在实际测试工作中,css的学习成本高一些,所以xpath用到的更多,而且xpath可以直接在浏览器通过F12复制XPATH,简单快捷。
我是程序员馨馨,全网id唯一,转载请注明出处。