八大元素定位方法(Python/Java)
许多不切实际的鼓励,大都是来自酒肉朋友或是远方亲戚。
小编最近在学习Web 自动化测试
,所以趁热打铁,整理下相关的知识点,今天主要分享的是八大元素定位方法
,无论是移动端还是web端,八大定位方法是共用的。本篇文章还分别提供了两种版本(python、java)的元素定位方式,一种Python版本提供了两种方式,因为在selenium
中八种元素定位的底层实现均为
driver.find_element(By.xxx,"value")
1. id
id定位是通过元素的id属性来定位元素,html规定id属性在整个html文档中必须是唯一的。
Python版本
element = driver.find_element_by_id("id值")
或者
element = driver.find_element(By.ID,"id值")
Java版本
element = driver.findElement(By.id("id值"))
2. name
name定位就是根据元素属性来定位,html文档中name的属性值是可以重复的。
如果name有多个属性值,默认使用第一个。
Python版本
element = driver.find_element_by_name("name值")
或者
element = driver.find_element(By.NAME,"name值")
Java版本
element = driver.findElement(By.name("name值"))
3.class_Name
class_Name定位就是根据元素class属性值来定位元素,html通过使用class来定位元素的样式。如果class有多个属性值,默认返回第一个。
Python版本
element = driver.find_element_by_class_name("页面元素的Class属性值")
或者
driver.find_element(By.CLASS_NAME,"页面元素的Class属性值")
Java版本
element = driver.findElement(By.className("页面元素的Class属性值"))
4. tag_name
tag_name 定位是通过标签名来定位,html本质上是由不同的tag组成,每一种标签一般在页面会存在多个,所以不方便进行精准定位,一般很少用。
Python版本
element = driver.find_element_by_tag_name("标签名")
或者
element = driver.find_element(By.TAG_NAME,"标签名")
Java版本
element = driver.findElement(By.tagName("标签名"))
5. link_text
只能定位超链接标签,可以精准定位a标签的全部文本内容。
Python版本
element = driver.find_element_by_link_text("链接的全部文字")
或者
element = driver.find_element(By.LINK_TEXT,"链接的全部文字")
Java版本
element = driver.findElement(By.LinkText("链接的全部文字"))
6. partial_link_text
只能定位超链接标签,输入部分链接文字即可。
Python版本
driver.find_element_by_partial_link_text("链接的部分文字")
或者
element = driver.find_element(By.PARTIAL_LINK_TEXT,"链接的部分文字")
Java版本
element = driver.findElement(By.partialLinkText(("链接的部分文字"))
7. XPath
XPath 为XML Path的简称,是一门在XML文档中查找元素信息的语言,HTML可以看做是XML的一种表现。XPath主要是通过元素的路径来定位,其中,路径又分为绝对路径、相对路径(XML是一种标记语言,用于数据的存储和传递。)
绝对路径:从最外层元素到指定元素之间所有经过元素层级的路径
绝对路径以 html 跟节点开始,使用 / 来分割元素层级;绝对路径对页面结构要求比较严格,万一开发改了路径并且没有告诉你,所以不建议使用。例如:/html/body/div/p[1]/input
相对路径:匹配任意层级的元素,不限制元素的位置。
相对路径以 // 开始
例如,//input 或者//*、//input[@password='密码A']
Tips:
1. 一般使用指定标签名称,不实用*代替,效率比较慢
2. 无论是绝对路径还是相对路径,/ 后面必须为元素的名称或者 *
Python版本
element = driver.find_element_by_xpath("//*[@id='username")
或者
element = driver.find_element(By.XPATH,"//*[@id='username")
Java版本
element = driver.findElement(By.xpath("//*[@id='username"))
8. CSS
css定位就是通过css选择器工具进行定位,css是一种标记语言,用于控制数据的样式。在selenium中推荐使用CSS定位,因为它比Xpath定位速度要快
Python版本
driver.find_element_by_css_selector("[name='password']")
或者
element = driver.find_element(By.CSS_SELECTOR,"[name='password']")
Java版本
element = driver.findElement(By.cssSelector("css定位表达式"))
总结
- id、name、class_name:为元素属性定位
- tag_name:为元素标签名称
- link_text、partial_link_text:为超链接定位(主要是处理a标签)
- XPath:为元素路径定位
- CSS:为CSS选择器定位
- 万能方法:XPath
八大元素定位方法(Python/Java)相关推荐
- Python+selenium自动化八大元素定位方法及实例(超详细)
目录 一.selenium模块中的find_element_by_id方法无法使用 二.Python+selenium自动化八大元素定位方法 使用场景: 1.通过id属性定位:driver.find_ ...
- selenium八大元素定位方法
selenium八大元素定位方法 定位方式一 定位方式二 定位方式一 定位方式二 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题,有助于目录的生成 如何改变文本的样式 插入链接与 ...
- Selenium-新八大元素定位方法(BY)
引言:看视频的时候发现好多视频使用的还是老版的元素定位方法,但是对于新版Python来说,已经弃用了之前的元素定位方法,所以在使用的时候会发现有报错,会被一条横线划掉.重新整理了一下目前使用的元素定位 ...
- Selenium原理及元素定位方法(JAVA)
Selenium原理 1.Selenium 1.0(Selenium RC): 早期的Selenium使用的是Javascript注入技术与浏览器打交道,需要Selenium RC启动一个Server ...
- python怎么鼠标定位id_Selenium八种元素定位方法(Python)
前言: 我们在做WEB自动化时,最根本的就是操作页面上的元素,首先我们要能找到这些元素,然后才能操作这些元素.工具或代码无法像我们测试人员一样用肉眼来分辨页面上的元素.那么我们怎么来定位他们呢? 在学 ...
- python+selenium自动化(四)__八大元素定位之class_name、tag_name、partial_link_text、css_selector
selenium八大元素定位(二) 上节讲了4种定位ID.NAME.LINK_TEXT.XPATH,这节继续学习剩下的4种元素定位方式 1.通过class_name定位 我们需定位上图中的" ...
- [python爬虫] Selenium常见元素定位方法和操作的学习介绍(转载)
转载地址:[python爬虫] Selenium常见元素定位方法和操作的学习介绍 一. 定位元素方法 官网地址:http://selenium-python.readthedocs.org/locat ...
- python selenium定位元素方法_[原创] python selenium 元素定位方法封装
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 写好了公用的调用类,接下来就按照pageobject的设计模式写一下基本的元素定位方法,此处我们需要对python的方法传参有所了解,没有自信的同学可以返 ...
- python+selenium笔记(一):元素定位方法
一.环境准备: 1.浏览器选择:Firefox 2.安装插件:Firebug和FirePath(设置>附加组件>搜索:输入插件名称>下载安装后重启浏览器) 3.安装完成后,页面右上角 ...
最新文章
- c++学习书籍推荐《Visual C++2008入门经典》下载
- 小米面试题:单词搜索
- 李开复老师:微博改变一切
- ClassPool CtClass浅析
- Unity中使用Attribute
- Bell数的生成函数推导
- python调用远程的python文件_python 实现调用远程接口
- 剑指offer之二叉树的下一个结点
- Python 异常后变量的赋值
- 计算机职称考试模拟试题及答案,2018职称计算机考试WindowsXP模拟试题及答案|计算机一级模拟题软件...
- linux 安装docker
- 公司盘点员工,不上班的员工要给钱吗?
- HNOI2019爆零记
- 效仿大众?宝马全新平台战略:简化硬件,强化软件差异化
- ARM7、ARM9、ARM11、ARM-Cortex的关系
- Springboot定时任务【多线程处理】
- 条件随机场(Conditional random field,CRF)
- 海盗比酒量--蓝桥杯
- html 条纹背景,CSS3 一组条纹背景图案
- 深度长文:AMD的崛起、衰落与复兴