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"/>

<meta name="viewport" content="width=device-width, initial-scale=1" />

<meta name="referrer" content="origin" />

<title>centos7 部署openstf - ianduin - 博客园</title>

</head>

<body>

<div>

<a name="top">猜猜看</a>

<img alt="点我试试呀" src="/images/bg.jpg">

<div id="home">

<div id="post_body" class="blogpost-body">

<p><span style="line-height: 1.5">openstf项目开源地址:</span></p>

</div>

<div class="highlighter-rouge">

<div class="newsItem">

<h3 class="catListTitle">公告</h3>

<div id="blog-news">

明天也许是个好日子吧

</div>

</div>

</div>

</div>

</div>

</body>

</html>

1.1 ID定位

  • 目标

根据元素ID找到“明天也许是个好日子吧”所属的元素

  • 实现

element1 = driver.find_element_by_id(“blog-news”)

element2 = driver.find_element(by=”id”, value=”blog-news”)

  • 说明

当前ID没有重复值,所有可以直接用find_element***定位元素,如果ID存在重复则在运行的时候会找不到元素,此时需要使用find_elements***,假设blog-news存在重复值,则定位方式如下:

element3 = driver.find_elements_by_id(“blog-news”)

element4 = driver.find_elements(by=”id”, value=”blog-news”)

使用driver.find_element(by=by, value=value)方式定位时,by传入的是定位方式,by在selenium.webdriver.common.by.By类中,各种定位方式对应关系如下:

CLASS_NAME = ‘class name‘

CSS_SELECTOR = ‘css selector‘

ID = ‘id‘LINK_TEXT = ‘link text‘

NAME = ‘name‘

PARTIAL_LINK_TEXT = ‘partial link text‘

TAG_NAME = ‘tag name‘

XPATH = ‘xpath‘

1.2 Class定位

  • 目标

查找含有highlighter-rouge类的元素

  • 实现

element1 = driver.find_element_by_class_name(“highlighter-rouge”)

element2 = driver.find_element(by=”class name”, value=”highlighter-rouge”)

  • 说明

当前class name没有重复值,所有可以直接用find_element***定位元素,如果class存在重复则在运行的时候会找不到元素,此时需要使用find_elements***,假设highlighter-rouge存在重复值,则定位方式如下:

element3 = driver.find_elements_by_class_name(“highlighter-rouge”)

element4 = driver.find_elements(by=”class name”, value=”highlighter-rouge”)

另外class在实际项目中经常都是以组合的方式出现,但是find_element_by_class_name()只能是定位单各class name,复合class name的时候需要使用css或者使用xpath定位方式

1.3 Name定位

  • 目标

查找name值为top的元素

  • 实现

element1 = driver.find_element_by_name(“top”)

element2 = driver.find_element(by=”name”, value=”top”)

  • 说明

当前name没有重复值,所有可以直接用find_element***定位元素,如果name存在重复则在运行的时候会找不到元素,此时需要使用find_elements***,假设top存在重复值,则定位方式如下:

element3 = driver.find_elements_by_class_name(“top”)

element4 = driver.find_elements(by=”class name”, value=”top”)

1.4 标签(tag name)定位

tag name即标签名称,如:a、input、button、img等

  • 目标

查找页面中的a标签

  • 实现

element1 = driver. find_element_by_tag_name(“a”)

element2 = driver. find_element(by=”tag name”, value=”a”)

  • 说明

当前标签没有重复值,所有可以直接用find_element***定位元素,如果name存在重复则在运行的时候会找不到元素,此时需要使用find_elements***,假设a存在重复值,则定位方式如下:

element3 = driver.find_elements_by_class_name(“a”)

element4 = driver.find_elements(by=”class name”, value=”a”)

1.5 超链接文本(Link text)定位

  • 目标

查找页面中的a标签

  • 实现

element1 = driver. find_element_by_link_text(“猜猜看”)

element2 = driver. find_element(by=”tag name”, value=”猜猜看”)

  • 说明

当前标签没有重复值,所有可以直接用find_element***定位元素,如果name存在重复则在运行的时候会找不到元素,此时需要使用find_elements***,假设“猜猜看”存在重复值,则定位方式如下:

element3 = driver.find_elements_by_class_name(“猜猜看”)

element4 = driver.find_elements(by=”class name”, value=”猜猜看”)

1.6 超链接模糊定位(partial link text)

  • 目标

查找页面中的a标签

  • 实现

element1 = driver. find_element_by_link_text(“猜猜看”)

element2 = driver. find_element(by=”tag name”, value=”猜猜看”)

  • 说明

当前标签没有重复值,所有可以直接用find_element***定位元素,如果name存在重复则在运行的时候会找不到元素,此时需要使用find_elements***,假设“猜猜看”存在重复值,则定位方式如下:

element3 = driver.find_elements_by_class_name(“猜猜看”)

element4 = driver.find_elements(by=”class name”, value=”猜猜看”)

原文地址:https://www.cnblogs.com/ianduin/p/12684425.html

时间: 2024-11-09 23:31:28

selenium自动化测试之元素定位一的相关文章

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

selenium自动化测试之元素定位二(xpath定位)

1.1 Xpath定位 1.1.1 选取节点 1.1.1.1 精确选择节点 XPath 使用路径表达式在 XML 文档中选取节点.节点是通过沿着路径或者 step 来选取的 路径表达式 表达式 描述 nodename 选取此节点的所有子节点. / 从根节点选取. // 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置. . 选取当前节点. .. 选取当前节点的父节点. @ 选取属性. 1.1.1.2 选取未知节点 XPath 通配符可用来选取未知的 XML 元素. 通配符 描述 * 匹配

Selenium 自动化测试之道--学习总结-WebDriver

最近正在看Ping++测试团队编著的<Selenium 自动化测试之道>,非常非常好的一本书,不仅仅是工具的介绍使用,还有非常珍贵的实践总结,自己的公司也在做自动化,由于是基于B/S,要考虑到硬件环境,而且主要使用的是RobotFramework去构建自动化脚本验证系统的可靠性. 之前自己也学习过关于Selenium的知识,但是总感觉知识很零散,自己在网上搜了很长时间,买了这本书,发现自己还欠缺很多,很庆幸能读到这本书,下面开始一点点的搭建自己的知识框架. 一.工作原理 Selenium We

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_n

【Selenium WebDriver】元素定位函数 FindElement

定位Web页面上的元素,用FindElement函数,它可以根据元素的不同属性来快速定位.具体的属性如下: 例子: HTML页面文件: 1 <html xmlns="http://www.w3.org/1999/xhtml" lang="en-us"> 2 <head> 3 <body> 4 <form name="loginForm"> 5 <label for="username

selenium+python自动化之元素定位

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

selenium+python之元素定位方式介绍

网页自动化测试最基本的要求就是要定位到各个元素,然后才能对该元素进行各种操作(输入,点击,清除,提交等),所以今天来总结下Selenuim+Python最基本的几种定位方式及实例说明, 以百度搜索输入框为例,用谷歌浏览器具体说明各个定位方式的用法. 1.导入selenium包的webdriver方法 输入 from selenium import webdriver 2.从 time 模块中引入sleep函数,使用sleep函数可以让程序休眠 输入 from time import sleep

【Selenium专题】元素定位之CssSelector

CssSelector是我最喜欢的元素定位方法,Selenium官网的Document里极力推荐使用CSS locator,而不是XPath来定位元素,原因是CSS locator比XPath locator速度快,特别是在IE下面(IE没有自己的XPath 解析器(Parser))他比xpath更高效更准确更易编写,美中不足是根据页面文字时略有缺陷没有xpath直接. 因为前端开发人员就是用CSS Selector设置页面上每一个元素的样式,无论那个元素的位置有多复杂,他们能定位到,那我们使用