一、ID定位

一般情况下页面元素的id属性在当前网页中是唯一的所以使用ID定位可以保证定位的唯一性,不会像其他定位方式一样可能定位到多个页面元素。但有的网页页面元素没有id属性值,导致无法使用ID定位方式。

HTML 源码

登录

Java代码

WebElement element = driver.findElement(By. id("lb"));

二、name定位

name属性值在一个网页中可以不是唯一值,因此使用name方式定位可能会同时定位到多个元素。

HTML 源码

登录

java代码

WebElement element=driver.findElement(By.name("tj_login"));

三、className定位

classname定位可以查找一个或者一组显示效果相同的页面元素。

HTML 源码

注册

java代码

WebElement element = driver.findElement(By.className( "reg"));

四、linkText定位(链接全部文字)

此方式定位链接需要完全匹配链接的显示文字,常用于页面中存在多个链接文字高度相似的情况,无法使用部分链接文字定位。

HTML 源码

搜索设置

java代码

WebElement element = driver.findElement(By.linkText( "搜索设置" ));

五、partialLinkText定位(链接部分文字)

这种定位方式只需模糊匹配链接的显示文字即可,常用于匹配页面链接文字不定期发生少量变化的情况,使用模糊匹配的方式可以提高链接定位的准确率,也可以用于模糊匹配一组链接的情况。

HTML 源码

sogou搜索

baidu搜索

Java代码

WebElement element = driver.findElement(By. partialLinkText( "baidu" ));

List elements=driver.findelement(By.partialLinkText("搜索"));

六、tagname定位(标签名称定位)

标签名定位方式主要用于匹配多个页面元素的情况,将找到的页面元素对象进行计数、遍历。。。

HTML 源码

搜索设置

baidu搜索

Java代码

WebElement element=driver.findElement(By.tagName("a"));

List elements= driver.findElement(By.tagName(a));

七、XPath定位(这里讲述的XPath例子全部是相对路径定位)

HTML源码

SeleniumElement

sogou搜索

baidu搜索

Input输入框
RadioBox单选框

yi

er

san

si

wu

1.使用索引号进行定位,从 1 开始。

java代码

//通过索引号定位到第2个radio按钮

WebElement element=driver.findElement(By.xpath("//input[2]"));

2.使用元素属性值定位

网页的元素通常包含各种各样的属性值,并且很多属性值具有唯一性若能确认属性值发生变更的可能性很低且具有唯一值,则推荐使用元素属性值定位的方法来编写XPath定位表达式

java代码

//使用class属性定位到值为 yi 的按钮

WebElement yi=driver.findElement(By.xpath("//input[@class='yi']"));

//定位到id属性值为sousuo的div中href属性值为http://www.baidu.com 链接

WebElement ss=driver.findElement(By.xpath("//div[@id='sousuo']/a[@href='http://www.baidu.com']"));

//使用type属性值定位输入框

WebElement t=driver.findElement(By.xpath("//input[@type='text']"));

3.使用模糊的属性值定位

自动化实施过程中,会遇到页面元素属性值动态的生成,即每次刷新后元素属性值都会变动。使用模糊的属性值定位方式可解决一部分此类难题。使用的方法为一下两个:

> starts-with()

> contains()

java代码

//查找输入框id属性开始位置包含“in”关键字的页面元素

WebElement in=driver.findElement(By.xpath("//input[starts-with(@id,'in')]"));

//查找链接href属性包含“baidu”关键字的页面元素

WebElement bu=driver.findElement(By.xpath("//a[contains(@href,'baidu')]"));

4.使用页面元素的文本来定位

java代码

//查找元素文本为 baidu搜索 的链接

WebElement bd=driver.findElement(By.xpath("//a[text()='baidu搜索']"));

//搜索包含 sogou 的连链接

WebElement sg=driver.findElement(By.xpath("//a[contains(text(),'sogou')]"));

5.使用XPath的轴(Axis)进行元素定位

使用XPath轴方式依据在文档树种的元素相对位置关系进行定位。先找到一个相对好定位的元素,依据它和要定位元素的相对位置进行定位,可解决一些元素难以定位的问题。提供的XPath轴关键字为一下几种:

① parent:选择当前节点的上层父节点

② child:选择当前节点的下层子节点

③ ancestor:选择当前节点所有上层的节点

④ descestor:选择当前节点所有上层的节点

⑤ following:选择在当前节点之后显示的所有节点

⑥ following-sibling:选择当前节点的所有平级节点

⑦ preceding:选择当前节点前面的所有节点

⑧ preceding-sibling:选择当前节点前面的所有同级节点

XPath相对路径

java中常用的定位方式有哪些_java-selenium八种元素定位方式相关推荐

  1. Selenium—八种元素定位方法

    前言: 在学习元素定位之前,我们最好能懂一点html的知识.我们要能找到这些元素,然后才能操作这些元素.工具或代码无法像我们测试人员一样用肉眼来分辨页面上的元素. 一.查看页面元素 用谷歌浏览器打开百 ...

  2. selenium自动化测试——常见的八种元素定位方法

    selenium常用的八种元素定位方法 1.通过 id 定位:find_element_by_id() 2.通过 name 定位:find_element_by_name() 3.通过 tag 定位: ...

  3. 自动化(二)——八种元素定位方法

    自动化(二) 一.元素定位 1)如何元素定位 二.元素定位方式 1)id定位 2)name定位 3) class_name定位 4) tag_name定位 5) link_text以及partial_ ...

  4. Selenium八种基本定位方式---基于python

    from selenium import  webdriver driver=webdriver.Firefox() driver.get("https://www.baidu.com&qu ...

  5. python怎么鼠标定位id_Selenium八种元素定位方法(Python)

    前言: 我们在做WEB自动化时,最根本的就是操作页面上的元素,首先我们要能找到这些元素,然后才能操作这些元素.工具或代码无法像我们测试人员一样用肉眼来分辨页面上的元素.那么我们怎么来定位他们呢? 在学 ...

  6. selenium点击元素位置_Selenium 八种元素定位方法

    前言: 我们在做WEB自动化时,最根本的就是操作页面上的元素,首先我们要能找到这些元素,然后才能操作这些元素.工具或代码无法像我们测试人员一样用肉眼来分辨页面上的元素.那么我们怎么来定位他们呢? 在学 ...

  7. selenium基础八种元素定位

    # coding:utf-8 from selenium import webdriver # 导入webdriver框架 import time # 导入time 功能driver = webdri ...

  8. java中常用的包 类和接口_java.util包常用的类和接口

    标签:ash   可变   支持   set   组成   arraylist   层次结构   有序   结构 1. 常用接口 (1)Collection Collection 层次结构 中的根接口 ...

  9. 关于selenium的8种元素定位

    selenium中有八种元素定位,分别是:id,name,class_name,tag_name,link_text.partial_link_text.xpath.css 简单的定位可以用id.na ...

最新文章

  1. lwip iperf 方法进行性能测试
  2. 使用Angular的http client发送请求,请求response总是被当成json类型处理
  3. 从相识到相惜:Redis与计算存储分离四部曲
  4. 基于java WebDriver +TestNG 框架环境设置
  5. 甚至有些还掉到书本上
  6. logstash过滤器插件filter详解及实例
  7. [转]vc++ release 版的生成
  8. bcdboot修复win10引导并通过ubuntu live USB安装grub
  9. 手机抢答器正在替代传统抢答器
  10. pip的安装,卸载和换源
  11. Reset、clock、locked和dcm_locked之间的坑
  12. 深圳机械立体停车改革出大招
  13. 评论系统--开发总结
  14. SPEA2_Python
  15. MFC combo, radio控件使用
  16. 阿里云盘webdev挂载
  17. 【数据分享】2022年11月西南地区POI数据分享(重庆、四川、贵州、云南、西藏)
  18. termux配置python安装kali_安卓用termux安装kali linux教程
  19. 关于运筹学三方库的编译和使用 ortools
  20. ios开发之公交卡系统的设计与实现

热门文章

  1. css家用电器,家用电器
  2. 安卓键盘加上数字_HHKB Professional HYBRID静电容键盘图赏
  3. PyTorch 入门实战
  4. 使用java+TestNG进行接口回归测试 1
  5. unittest模式切换成普通模式
  6. 阿里云Redis (安装包安装篇)
  7. 腾讯云主机Python3环境安装PySpider爬虫框架过程
  8. 关于网络蜘蛛以及搜索蜘蛛爬行
  9. NetBeans 时事通讯(刊号 # 60 - Jun 21, 2009)
  10. 使用Linq判断DataTable数据是否重复