xpath 的定位方法, 非常强大。  使用这种方法几乎可以定位到页面上的任意元素。

什么是xpath

xpath 是XML Path的简称, 由于HTML文档本身就是一个标准的XML页面,所以我们可以使用Xpath 的用法来定位页面元素。

xpath定位的缺点

xpath 这种定位方式, webdriver会将整个页面的所有元素进行扫描以定位我们所需要的元素, 这是个非常费时的操作,  如果脚本中大量使用xpath做元素定位的话, 脚本的执行速度可能会稍慢

testXpath.html 代码如下

<html>
<head><title>Test Xpath</title></head>
<body>
<div id="div1">
<input name="div1input"></input>
<a href="http://www.sogou.com">搜狗搜索</a>
<img alt="div1-img1" src="http://www.sogou.com/images/logo/new/sogou.png" href="http://www.sogou.com">搜狗图片</img>
<input type="button" value="查询"></input>
</div>
<br />
<div name="div2">
<input name="div2iniput" /></input>
<a href="http://www.baidu.com">百度搜索</a>
<img alt="div2-img2" src="http://www.baidu.comn/img/bdlogo.png" href="http:/www.baidu.com">百度图片</img>
</div>
</body>
</html>

绝对路径定位方式

在被测试网页中, 查找第一个div标签中的按钮

XPath的表达式

/html/body/div/input[@value="查询"]

WebElement button = driver.findElement(By.xpath("/html/body/div/input[@value='查询']"));

使用浏览器调试工具,可以直接获取xpath语句

绝对路径的缺点

1. 一旦页面结构发生改变,改路径也随之失效,必须重新。 所以不推荐使用绝对路径的写法

绝对路径和相对路径的区别

绝对路径  以 "/"  开头, 让xpath 从文档的根节点开始解析

相对路径  以"//" 开头, 让xpath 从文档的任何元素节点开始解析

相对路径定位方式

在被测试网页中,查找第一个div标签中的按钮

XPath的表达式

//input[@value="查询"]

WebElement button = driver.findElement(By.xpath("//input[@value='查询']"));

使用索引号定位

在被测试网页中, 查找第二个div标签中的"查询"按钮

//input[2] 

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

使用页面属性定位

定位被测试页面中的第一个图片元素

//img[@alt='div1-img1']

WebElement button = driver.findElement(By.xpath("//img[@alt='div1-img1']"));

模糊定位starts-with关键字

查找图片alt属性开始位置包含'div1'关键字的元素

//img[starts-with(@alt,'div')]

模糊定位contains关键字

查找图片alt属性包含'g1'关键字的元素

//img[contains(@alt,'g1')]

text() 函数 文本定位

 
查找所有文本为"百度搜索" 的元素
driver.findElement(By.xpath("//*[text()='百度搜索']"));

查找所有文本为“搜索” 的超链接

driver.findElement(By.xpath("//a[contains(text(),'搜索')]"));

转自:https://www.cnblogs.com/TankXiao/p/5253072.html

Selenium-xapth定位的更多相关文章

  1. selenium之 定位以及切换frame(iframe)

    Set<String> windows = driver.getWindowHandles();        int count = 0;        for(String handl ...

  2. selenium各种定位方法(转)

    selenium使用 Xpath CSS JavaScript jQuery的定位方法 (治疗selenium各种定位不到,点击不了的并发症) 2017年07月28日 22:47:36 阅读数:369 ...

  3. selenium的定位方式

    1.selenium的定位方式 selenium有18种定位方式,8种单数,8种复数,2种父类 2.8种单数定位方式 from selenium import webdriverimport time ...

  4. 自动化测试基础篇--Selenium元素定位

    摘自https://www.cnblogs.com/sanzangTst/p/7457111.html 一.Selenium元素定位的重要性: Web自动化测试的操作:获取UI页面的元素,对元素进行操 ...

  5. selenium配置文件定位元素

    之前的写的selenium的定位元素进行测试的代码,现在一运行就报找不到元素了,之前运行的好好的. 我查看网站源码后,发现网站元素确实是变了,原来的定位的xpath代码压根全部找不到了,于是 想着,以 ...

  6. Selenium3 + Python3自动化测试系列二——selenium元素定位

    一.selenium元素定位 Selenium对网页的控制是基于各种前端元素的,在使用过程中,对于元素的定位是基础,只有准去抓取到对应元素 才能进行后续的自动化控制,我在这里将对selenium8种元 ...

  7. selenium iframe 定位 qq空间说说

    selenium iframe 定位  qq空间说说

  8. py+selenium 无法定位ShowModalDialog模态窗口【已解决】

    问题:无法定位弹出的模态窗口. 前瞻: 模态窗口:关闭之前,无法操作其他窗口. 但是selenium无法定位到这类窗口,百度说是目前selenium不支持处理模态窗口. 目标:定位到窗口里面的元素,完 ...

  9. python selenium八大定位方法

    一.定位方法 注意:元素属性必须唯一存在 #id定位 find_element_by_id() #name定位 find_element_by_name() #class_name定位 find_el ...

  10. selenium元素定位之css选择器

    在selenium元素定位时会用到css选择器选取元素,虽说xpath在定位元素时能解决大部分问题,但使用css选择器选取元素也是一种不错的选择. css相较与xpath选择元素优点如下: 表达式更加 ...

随机推荐

  1. 利用VMware克隆 windows 虚拟机需要注意的事项

    利用VMware克隆windows虚拟机需要注意的事项--克隆虚拟机 --powershell 在域服务器使用,查看所有的sid dsquery computer|dsget computer -dn ...

  2. Linux环境安装nodejs

    安装node 去官网下载nodejs 根据下载的文件可以看出它的压缩方式是.xz的方式,所以不能直接使用linux命令tar直接下载. xz -d node-v10.6.0-linux-x64.tar ...

  3. mysql如果主库宕机,如何解决?

    两种情况服务器down机,数据库down机 如果此时需要切从库 1.先show processlist\G,查看状态 如果看到两个状态,说明此时的从库和主库是同步的 state: waiting fo ...

  4. DOM实例

    同一种功能两种方法: <script type='text/javascript'> <!-- var tag = document.creatElement("a&quo ...

  5. Linux Shell编程第4章——sed和awk

    目录 sed命令基本用法 sed命令实例 命令选项 文本定位 编辑命令 awk编程模型 awk编程实例 1.awk模式匹配 2.记录和域 3.关系和布尔运算符 4.表达式 5.系统变量 6.格式化输出 ...

  6. Visual Studio 正则表达式替换

    查找空行:^(?([^\r\n])\s)*\r?$\r?\n 查找多余的空行:^(?([^\r\n])\s)*\r?$\r?\n^(?([^\r\n])\s)*\r?$\r?\n

  7. ruby underscore

    “examScore".underscore : exam_score "ExamScore".underscore: exam_score

  8. ubuntu 配置tomcat 实测成功

    https://blog.csdn.net/qq_24091555/article/details/75077781

  9. PAT 天梯赛 L1-001 【水】

    L1-001. Hello World 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 这道超级简单的题目没有任何输入. 你只需要在一行中输 ...

  10. python 课堂笔记-购物车

    # Author:leon production_list = [ ('iphone',5800), ('mac pro', 9800), ('bike', 800), ('watch', 10600 ...