学习总结——Selenium元素定位
读一本好书,不能读读就算了,做一下总结,变成自己的,以备查阅。
1. driver.findElement(By.id(<element ID>))
ID是独一无二的,使用ID定位是最为推荐的方法。
但是:1.不是所有元素都会指定ID;2.有的ID属性的值是动态生成的。
2. driver.findElement(By.name(<element name>))
name属性不一定唯一,如果有多个,第一个出现的会被选择。
3. driver.findElement(By.className(<element class>))
4. driver.findElement(By.tagName(<htmltagname>))
tagName()方法是定位 HTML 标记名称:
WebElement table = driver.findElement(By.id("summaryTable"));
List<WebElement> rows = table.findElements(By.tagName("tr"));
assertEquals(10, rows.size());
5. driver.findElement(By.linkText(<linktext>))
WebElement 类也可以支持查询子类元素。
WebElement topLink = driver.findElement(By.id("div1")).findElement(By.linkText("top"));
6. driver.findElement(By.partialLinkText(<linktext>))
当元素有部分在变时,可以用部分不变的内容来定位元素。
7. driver.findElement(By.cssSelector(<cssselector>))
1) 绝对路径如:WebElement userName = driver.findElement(By.cssSelector("html >
body > div > div > form > input"));
但是,这个策略会有一些的限制,他取决于页面的整个结构。如果有些许改变,选择 器将找不到这个元素。
相对路径
2) DOM中第一个<input>元素:WebElement userName = driver.findElement(By.cssSelector("input"));
3) 使用class定位:先指定一个 HTML 的标签,然后加一个“.”符号,跟上 class 属性的值, WebElement loginButton =driver.findElement(By.cssSelector("input.login"));可以找到按钮的<input>标签 class 为 login 的元素。
使用ID 来定位:先指定一个 HTML 标签,然后加上一个“#”符号,跟上 id 的属性 值,如下所示:
WebElement userName =driver.findElement(By.cssSelector("input#username"));
这将会返回 input 标签中 id 为 username 的元素。
使用name定位:WebElement userName =
driver.findElement(By.cssSelector("input[name=username]"));
使用 name 属性来定位元素和直接用 By 类中的 name()方法来定位相似。
使用其他的属性定位:WebElement previousButton driver.findElement(By.cssSelector("img[alt='Previous']"));
4) 使用多个属性来定位<input>元素:WebElement previousButton =driver.findElement(By.cssSelector("input[type='submit'][value='Login']"));
5) 使用属性名称定位元素:List<WebElement> imagesWithAlt =
driver.findElements(By.cssSelector("img[alt]"));
not()伪类匹配不满足规则的元素: 例如, 想要定位那些<img>标签中不含有alt属性,
List<WebElement> imagesWithoutAlt=driver.findElements(By.cssSelector("img:not([alt])"));
6) 部分属性值的匹配:
input[id^= ' ctrl']:以ctrl开始
input[id$='_userName']:以_userName结尾
input[id*='userName']:包含userName
8. driver.findElement(By.xpath(<xpath queryexpression>))
1) 绝对路径:WebElement userName =driver.findElement(By.xpath("html/body/div/div/form/input"));
这个策略有局限性,他需要参考整个页面的文档结构。如改变了,此元素的定位将会
失效。
相对路径:
2) DOM中第一个<input>元素:
WebElement userName = driver.findElement(By.xpath("//input"));
使用索引来定位元素,第二个<input>:
WebElement passwd = driver.findElement(By.xpath("//input[2]"));
3) 用 ID 属性来定位:
WebElement userName =driver.findElement(By.xpath("//input[@id='username']"));
使用 alt 属性来定位:
WebElement previousButton = driver.findElement(By.xpath("img[@alt='Previous']"));
4) 使用多个属性来定位<input>元素:
- WebElement previousButton =driver.findElement(By.xpath("//input[@type='submit'][@value='Login']"));
- WebElement previousButton = driver.findElement(By.xpath("//input[@type='submit'and @value='Login']"));
- WebElement previousButton = driver.findElement(By.xpath("//input[@type='submit'or @value='Login']"));
5) 使用 XPath 及属性名称定位元素:
List<WebElement> imagesWithAlt = driver.findElements(By.xpath ("img[@alt]"));
6) 部分属性值的匹配:
input[starts-with(@id,'ctrl')]:id以ctrl开始
input[ends-with(@id,'_userName')]:id以_userName结束
Input[contains(@id,'userName')]:id包含userName
7) 使用值来匹配任意属性及元素:
WebElement userName = driver.findElement(By.xpath("//input[@*='username']"));
8) 使用 XPath 轴来定位元素:用到再研究。
总结提示:
- 使用 id,name 或 class 属性是定位元素的首选方法。
- CSS 选择器和 XPath 在 Selenium 用户中非常流行,但是 CSS 选择器相比 XPath 从难易、速度、效率来说更为推荐大家使用。
- XPath 的查询慢于CSS 选择器,因为 XPath支持双向的查询。可以通过元素的父,兄弟,子节点来定位元素。
转载于:https://www.cnblogs.com/lucy-lily/p/5158144.html
学习总结——Selenium元素定位相关推荐
- python学习的一个定位_python学习之——selenium元素定位
web自动化测试按步骤拆分,可以分为四步操作:定位元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告. 其中定位元素尤为关键,此篇是使用webdriver通过页面各个 ...
- selenium学习笔记之元素定位
selenium学习笔记之元素定位 Selenium是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样. 首先需要创建浏览器驱动: from sele ...
- python xpath定位打印元素_python基础教程:8种selenium元素定位的实现
前言 selenium是一个非常厉害的爬虫利器,不,简直是神器了,它可以自动的控制浏览器,但是你得告诉浏览器,你想干嘛,爬哪里,这时候就要用到元素定位了,在HTML中都有着不同的标签和属性,selen ...
- java8种定位_python基础教程:8种selenium元素定位的实现
前言 selenium是一个非常厉害的爬虫利器,不,简直是神器了,它可以自动的控制浏览器,但是你得告诉浏览器,你想干嘛,爬哪里,这时候就要用到元素定位了,在HTML中都有着不同的标签和属性,selen ...
- Selenium元素定位方法大全
目录 一.背景 二.浏览器定位元素 三.Selenium元素定位代码 3.1 通过id定位 3.2 通过class定位 3.3 通过name定位 3.4 通过tagname定位 3.5 通过link_ ...
- 面试被问:Selenium元素定位不到问题,如何回答?
1.maven有什么作用? 最常用的maven相关功能大概以下几种: a. 管理jar依赖 b. 构建项目(打包.编译等) c. 发布项目(共享.上传至服务器,供他人使用) Maven用配置文件的方式 ...
- 解决selenium版本过时 和 selenium - 元素定位
# selenium模板# @Time : 2022/6/29 16:40# (1)导入selenium from selenium import webdriver from selenium.we ...
- python selenium 元素定位_python3+selenium入门04-元素定位
我们在对浏览界面做操作时,比如点击按钮,搜索框输入内容.都需要把鼠标挪过去,然后再点击,或者输入内容.在selenium操作时也是一样的.需要先对元素进行定位,然后才能进行操作.可以借助浏览器的开发者 ...
- CssSelector之selenium元素定位
CssSelector是我最喜欢的元素定位方法,Selenium官网的Document里极力推荐使用CSS locator,而不是XPath来定位元素,原因是CSS locator比XPath loc ...
最新文章
- 大厂常见笔试题 滑动窗口内数的和
- 使用vant时 tab栏中出现 van-tabs怎么省略号怎么解决
- java oschina_简单说说 OSChina 的技术架构
- Opencv 图像增强算法 图像检测结果及代码
- 2019.02.19 bzoj2655: calc(生成函数+拉格朗日插值)
- mysql in range_mysql 的 RANGE 分区有价值吗?
- 【实用软件】局域网传输神器-LANDrop
- oracle dbv验证,Oracle DBV工具说明
- 至尊宝代表哪一种人?
- 数据分析,如何支持管理层决策
- (31)ObjectARX2015 + vs2012选择集
- “AI”加持,一起“沉浸式体验”企业的走心服务
- 三大流派三次浪潮,人工智能60年沉浮史
- 分布式计算机联锁系统,基于MAS的分布式计算机联锁系统研究
- TCP、UDP、TCP三次握手与四次挥手、TCP如何保证可靠传输、TCP异常分析、拆包和粘包等
- C# 交集、差集、并集、子集、真子集、集合元素是否全等
- linux 图标显示 异常,在Ubuntu 18.04系统中VSCode图标显示异常的解决方法
- luogu1304 哥德巴赫猜想
- 链表(C++类模板实现)
- 小学一年级语文考试试题【19】
热门文章
- github设置仓库可见性 私人仓库设置
- 程序员效率:职业倦怠的理解
- 生产三码 黑苹果_黑苹果OC配置工具:OpenCore Configurator v2.15.2.0
- freemarker 去掉最后一个逗号_从零开始做一个SLG游戏(六)游戏系统以及配置表...
- 外卖和快递行业数据_下周一起,整治全面启动!锁定全市外卖、快递行业!
- linux子系统 重置,浅析win10系统重置Linux子系统的设置方法
- linux ll命令无效
- 七月时忙碌而充实的_如何减少忙碌而更有效
- 深入 Adobe Reader 保护模式 —— 第一部分 —— 设计
- MySQL数据库基础(五)——SQL查询