UI自动化之——元素定位

一、概述

UI自动化要做的就是模拟鼠标和键盘对元素进行操作,单击、输入或鼠标悬停等操作,所有的这些操作都建立在找到元素的基础上,下面说一下,selenium的八大元素定位,重点说一下xpath元素定位。

二、selenium的八大元素定位

2.1 id定位

find_element_by_id() # 通过id属性来定位元素

2.2 name定位

find_element_by_name() # 通过name 属性来定位元素

2.3 class定位

find_element_by_class_name() # 通过class属性来定位元素

2.4 tag定位

find_element_by_tag_name() # 通过表tag name定位元素

2.5 link定位

find_element_by_link_text() # 通过元素标签之间的文本信息来定位元素

2.6 partial link定位

find_element_partial_by_link_text() # 通过元素标签对之间的部分文本信息来定位元素

2.7 xpath定位

xpath时一种XML文档中定位元素的语言,因为HTML可以看做XML的一种实现,所以selenium用户可以使用这种强大的语言在web应用中定位元素。

find_element_by_xpath() # 通过xpath路径进行定位元素

2.8 CSS定位

CSS(Cascading Style Sheets)是一种语言,他用来描述HTML和XML文档的表现。CCS使用选择器来为页面绑定元素,这些选择器可以使用被selenium用作另外的定位策略。

find_element_by_css_selector() # 通过ccs选择器来定位元素

CCS选择器的常用语法:

选择器 例子 描述

.class

.intor class选择器,选择class="intro"的所有元素
#id #firstname id选择器,选择id="firstname"的所有元素
* * 选择所有元素
element p 元素所有<p>元素
element > element div>input 选择父级元素为<div>的所有<input>元素
element + element div+input 选择同一级中紧接在<div>元素之后的所有<input>元素
[arttribute=value] [taget=_blank] 选择target="_blank"的所有元素

如图:使用CCS进行元素定位

===========================================================================================================================================

三、xpath元素定位

3.1 绝对路径定位

/html/body/div/div[2]/div/div/div/from/span/input
find_element_by_xpath("/html/body/div/div[2]/div/div/div/from/span/input") # 通过xpath的绝对定位来定位元素

3.2 利用元素属性定位

针对下图中的元素进行元素定位

driver.find_element_by_xpath(‘//input[@id="kw"]‘)
driver.find_element_by_xpath(‘//input[@class="s_ipt"]‘)
driver.find_element_by_xpath(‘//input[@name="wd"]‘)driver.find_element_by_xpath(‘//input[contains(@class, "ipt")]‘    # 当元素的属性过长时,可以使用contains来使用部分值来进行匹配

3.3 层级与属性结合定位

如果一个元素本身没有可以唯一定位这个元素的属性值,那么可以找其上一级的元素,如果上级元素可以有可以唯一定位的属性,也可以哪来使用;如下图所示

3.4 使用逻辑运算符

如果元素的一个属性不能唯一区分一个元素,还可以使用逻辑运算符连接多个属性来查找元素

find_element_by_xpath("//input[@id="kw" and @class="su"]")

3.5 轴定位

xpath轴定位,应用场景是当某个元素的各个属性及其组合都不足以定位时,那么可以利用其兄弟节点或者父节点等各种可以定位的元素进行定位。

3.5.1 XPATH轴定位的用法说明

以下的截图是参考的菜鸟教程(链接:https://www.runoob.com/xpath/xpath-axes.html

常用的轴运算名称:

ancestor   :祖先节点,包括父节点

parent  :父节点

preceding  :当前元素节点标签之前的所有节点(HTML页面先后顺序)

preceding-sibling  :当前元素节点标签之前的所有兄弟节点(同级)

following  :当前元素节点标签之后的所有节点(HTML页面先后顺序)

following-sibling  :当前元素节点标签之后的所有兄弟节点(同级)

3.5.2 语法

轴名称::节点名称

举例说明如何定位的:

如上图所示,根据元素1来定位元素2,这里用到了轴定位,先找到元素1的父节点——兄弟节点——子节点,由此找到元素2

原文地址:https://www.cnblogs.com/htx18/p/12015643.html

时间: 2024-10-09 10:31:31

UI自动化之——元素定位的相关文章

UI自动化页面元素定位

做ui自动化的最基础的就是页面元素定位了,如果连页面元素都定位不到,自动化从何谈起呢?接下来我们就看看页面元素定位的方法吧!(这里就用百度页面来进行演示) 一.最通用的几种定位方式: 1.通过id定位 1 driver.find_element_by_id('su') 2.通过name定位 driver.find_element_by_name('mp') 3.通过class属性 driver.find_element_by_class_name('s_ipt') 4.通过文本链接 driver

selenium+python自动化之元素定位

自动化按步骤拆分的话,可以分为四步操作:定位元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告.本篇接下来讲基本的八种元素定位方法.说的通俗一点,就是教大家找对象. 万物皆对象,所谓的对象,就是你喜欢的那个女神,她就是你的对象.既然是对象,她就有属性,比如眼睛大,头发长,皮肤白,颜值高.这些都是她的属性,每个属性又有对应的属性值,如眼睛="大",头发="长",颜值="高",对应的=后面就是它的属性的值. 同样的道

三、Appium-python-UI自动化之元素定位uiautomatorviewer

uiautomatorviewer是android-sdk自带的一个元素定位工具,非常简单好用,使用uiautomatorviewer,可以检查一个应用的UI来查看应用的布局和组件以及相关的属性. 一.运行uiautomatorviewer.bat 1.打开F:\Android\android-sdk\tools,双击uiautomatorviewer.bat 2.点击devices screenshot,保持手机桌面高亮显示 3.点击图中的元素,右下角即可显示元素的属性 4.根据图中元素 te

Web UI自动化测试基础——元素定位(二)

本篇文章整理了元素定位的基础知识——多个元素定位方式. 一.多个元素定位方式简介 同单个元素定位方式相同,多个元素定位方式也有与之对应的8种方式,即id.name.class_name.tag_name.link_text.partial_link_text.xpath和css_selector.不同的是方法名中element需要写成复数形式.多个元素定位得到的结果通常是一个列表类型,可以通过索引方式访问具体元素. 二.实例 以百度首页为例,通过find_elements_by_tag_name

Python自动化学习--元素定位

from selenium import webdriver import time driver = webdriver.Chrome() driver.get("https://www.baidu.com/index.php?tn=25017023_6_pg&ssl_s=1&ssl_c=ssl1_16d7f66ac98") ''' # 元素定位之 id 定位 driver.find_element_by_id("kw").send_keys(&q

selenium自动化测试之元素定位一

Selenium元素定位方法总共有八大类,分别是:id,name,class name,tag name,link text,partial link text,xpath,css.八种定位方法没有哪个是最好的,在不同的场景下需要使用不用的定位方法. 示例html文件如下: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="utf-8"/> <me

Appium移动端自动化:元素定位方式总结

ClassName Android:Android的class属性对应ClassName定位方式,ClassName一般都是会重复的,可以通过index来获取需要的元素.(从0开始查找dom树中的同名class属性) iOS:iOS的type属性对应CLassName定位方式,ClassName一般都是会重复的,可以通过index来获取需要的元素.(从0开始查找dom树中的同名class属性) # 通过class_name定位,取class内容: driver.find_element_by_c

Selenium自动化测试之元素定位

一.Selenium定位方法 自动化测试的关键是要准确的操作测试对象,所以就需要对被测系统的页面元素做精确的定位:有以下几种定位方法: By.classNme(String className) By.cssSelector(String selector) By.id(String id) By.linkText(String linkText) By.name(String name) By.partialLinkText(String linkText) By.tagName(String

selenium自动化测试之元素定位三(css定位)

1.1 CSS定位 1.1.1 绝对路径定位 目标 查找第一个文本为“猜猜看”的a标签 实现 CSS表达式 html>body>div>a[.=”猜猜看”] python表达式 driver.find_element_by_css_selector(‘html>body>div>a[.=”猜猜看”]’) 1.1.2 相对路径定位 目标 查找第一个文本为“猜猜看”的a标签 实现 CSS表达式 a[.=”猜猜看”] Python表达式 driver.find_element