读一本好书,不能读读就算了,做一下总结,变成自己的,以备查阅。

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 轴来定位元素:用到再研究。

总结提示:

  1. 使用 id,name 或 class 属性是定位元素的首选方法。
  2. CSS 选择器和 XPath 在 Selenium 用户中非常流行,但是 CSS 选择器相比 XPath 从难易、速度、效率来说更为推荐大家使用。
  3. XPath 的查询慢于CSS 选择器,因为 XPath支持双向的查询。可以通过元素的父,兄弟,子节点来定位元素。

转载于:https://www.cnblogs.com/lucy-lily/p/5158144.html

学习总结——Selenium元素定位相关推荐

  1. python学习的一个定位_python学习之——selenium元素定位

    web自动化测试按步骤拆分,可以分为四步操作:定位元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告. 其中定位元素尤为关键,此篇是使用webdriver通过页面各个 ...

  2. selenium学习笔记之元素定位

    selenium学习笔记之元素定位 Selenium是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样. 首先需要创建浏览器驱动: from sele ...

  3. python xpath定位打印元素_python基础教程:8种selenium元素定位的实现

    前言 selenium是一个非常厉害的爬虫利器,不,简直是神器了,它可以自动的控制浏览器,但是你得告诉浏览器,你想干嘛,爬哪里,这时候就要用到元素定位了,在HTML中都有着不同的标签和属性,selen ...

  4. java8种定位_python基础教程:8种selenium元素定位的实现

    前言 selenium是一个非常厉害的爬虫利器,不,简直是神器了,它可以自动的控制浏览器,但是你得告诉浏览器,你想干嘛,爬哪里,这时候就要用到元素定位了,在HTML中都有着不同的标签和属性,selen ...

  5. Selenium元素定位方法大全

    目录 一.背景 二.浏览器定位元素 三.Selenium元素定位代码 3.1 通过id定位 3.2 通过class定位 3.3 通过name定位 3.4 通过tagname定位 3.5 通过link_ ...

  6. 面试被问:Selenium元素定位不到问题,如何回答?

    1.maven有什么作用? 最常用的maven相关功能大概以下几种: a. 管理jar依赖 b. 构建项目(打包.编译等) c. 发布项目(共享.上传至服务器,供他人使用) Maven用配置文件的方式 ...

  7. 解决selenium版本过时 和 selenium - 元素定位

    # selenium模板# @Time : 2022/6/29 16:40# (1)导入selenium from selenium import webdriver from selenium.we ...

  8. python selenium 元素定位_python3+selenium入门04-元素定位

    我们在对浏览界面做操作时,比如点击按钮,搜索框输入内容.都需要把鼠标挪过去,然后再点击,或者输入内容.在selenium操作时也是一样的.需要先对元素进行定位,然后才能进行操作.可以借助浏览器的开发者 ...

  9. CssSelector之selenium元素定位

    CssSelector是我最喜欢的元素定位方法,Selenium官网的Document里极力推荐使用CSS locator,而不是XPath来定位元素,原因是CSS locator比XPath loc ...

最新文章

  1. 大厂常见笔试题 滑动窗口内数的和
  2. 使用vant时 tab栏中出现 van-tabs怎么省略号怎么解决
  3. java oschina_简单说说 OSChina 的技术架构
  4. Opencv 图像增强算法 图像检测结果及代码
  5. 2019.02.19 bzoj2655: calc(生成函数+拉格朗日插值)
  6. mysql in range_mysql 的 RANGE 分区有价值吗?
  7. 【实用软件】局域网传输神器-LANDrop
  8. oracle dbv验证,Oracle DBV工具说明
  9. 至尊宝代表哪一种人?
  10. 数据分析,如何支持管理层决策
  11. (31)ObjectARX2015 + vs2012选择集
  12. “AI”加持,一起“沉浸式体验”企业的走心服务
  13. 三大流派三次浪潮,人工智能60年沉浮史
  14. 分布式计算机联锁系统,基于MAS的分布式计算机联锁系统研究
  15. TCP、UDP、TCP三次握手与四次挥手、TCP如何保证可靠传输、TCP异常分析、拆包和粘包等
  16. C# 交集、差集、并集、子集、真子集、集合元素是否全等
  17. linux 图标显示 异常,在Ubuntu 18.04系统中VSCode图标显示异常的解决方法
  18. luogu1304 哥德巴赫猜想
  19. 链表(C++类模板实现)
  20. 小学一年级语文考试试题【19】

热门文章

  1. github设置仓库可见性 私人仓库设置
  2. 程序员效率:职业倦怠的理解
  3. 生产三码 黑苹果_黑苹果OC配置工具:OpenCore Configurator v2.15.2.0
  4. freemarker 去掉最后一个逗号_从零开始做一个SLG游戏(六)游戏系统以及配置表...
  5. 外卖和快递行业数据_下周一起,整治全面启动!锁定全市外卖、快递行业!
  6. linux子系统 重置,浅析win10系统重置Linux子系统的设置方法
  7. linux ll命令无效
  8. 七月时忙碌而充实的_如何减少忙碌而更有效
  9. 深入 Adobe Reader 保护模式 —— 第一部分 —— 设计
  10. MySQL数据库基础(五)——SQL查询