baidu.html代码如下

....
<form id="form" class="fm" action="/s" name="f">
  <input type="hidden" value="utf-8" name="ie">
  <input type="hidden" value="8" name="f">
  <input type="hidden" value="1" name="rsv_bp">
  <input type="hidden" value="1" name="rsv_idx">
  <input type="hidden" value="" name="ch">
  <input type="hidden" value="02.." name="tn">
  <input type="hidden" value="" name="bar">
  <span class="bg s_ipt_wr">
    <input id="kw" class="s_ipt" autocomplete="off" maxlength="100" value="" name="wd">
  </span>
  <span class="bg s_btn_wr">
    <input id="su" class="bg s_btn" type="submit" value="百度一下">
  </span>
.....

1.绝对路径定位

XPath 的绝对路径主要用标签名的层级关系来定位元素的绝对路径。最外层为html 语言,body 文本内,一级一级往下查找,如果一个层级下有多个相同的标签名,那么就按上下顺序确定是第几个

用下面的方法来定位百度输入框和搜索按钮

findElement(By.xpath("/html/body/div/div[2]/div/div/div/from/span/input"))
findElement(By.xpath("/html/body/div/div[2]/div/div/div/from/span[2]/input"))

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

2.相对路径定位

//表示当前页面某个目录下,input 表示定位元素的标签名,[@id='kw'] 表示这个元素的id 属性值等于kw。

findElement(By.xpath("//input[@id='kw']"))
findElement(By.xpath("//input[@id='su']"))

如果不想指定标签名也可以用星号(*)代替

WebElement button = driver.findElement(By.xpath("//*[@id='kw']"));

使用XPath 不仅仅只局限在id、name 和class 这三个属性值,元素的任意属性值都可以使用,只要它能唯一的标识一个元素。

3.使用逻辑运算符

遇到一个属性不足以定位一个元素的情况,需要联合其他的属性达到精确定位,类似如下:

findElement(By.xpath("//input[@id='kw' and @class='su']/span/input"))

4.模糊定位

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

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

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

//imag[ends-with(@alt,'div')]

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

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

5.text() 函数 文本定位

查找所有文本为"百度搜索" 的元素

driver.findElement(By.xpath("//*[text()='百度搜索']"));

比如知乎登录界面的登录按钮:

可以写成这样:

driver.findElement(By.xpath("//button[text()='登录']"))

查找包含搜索的元素

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

selenium webdriver——XPath 定位的更多相关文章

  1. selenium之xpath定位和input文本

    selenium之xpath定位和input文本 xpath简单定位: 打开浏览器的F12 在自己需要定位的元素的那里右键 选择copy->xpath selenium获取input下的文本: ...

  2. 用XPath精确定位节点元素&selenium使用Xpath定位之完整篇

    在利用XSL进行转换的过程中,匹配的概念非常重要.在模板声明语句 xsl:template match = ""和模板应用语句xsl:apply-templates select ...

  3. selenium webdriver XPath的定位方法练习 !

    html  代码: <html> <body> <div id="div1"> <input name="divl1input& ...

  4. Selenium Webdriver元素定位的八种常用方式

    楼主原创,欢迎学习和交流,码字不容易,转载请注明出处,谢谢. 在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素 ...

  5. Selenium Webdriver元素定位的八种常用方法

    如果你只是想快速实现控件抓取,而不急于了解其原理,可直接看: http://blog.csdn.net/kaka1121/article/details/51878346 如果你想学习web端自动化, ...

  6. Selenium Webdriver元素定位的八种常用方式(转载)

    转载自 https://www.cnblogs.com/qingchunjun/p/4208159.html 在使用selenium webdriver进行元素定位时,通常使用findElement或 ...

  7. 爬虫-【selenium—Webdriver元素定位的八种常用方式

    在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素句柄来定位元素.其中By类的常用定位方式共八种,现分别介绍如下 ...

  8. Selenium Webdriver元素定位的八种常用方式【转】

    在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素句柄来定位元素.其中By类的常用定位方式共八种,现分别介绍如下 ...

  9. selenium:Xpath定位详解

    xpath定位在业界被戏称为元素定位的"屠龙宝刀",宝刀在手,武林我有.现在我们就来详解xpath定位方法. 一.xpath通过元素属性定位 xpath可以通过元素的属性来定位,如 ...

随机推荐

  1. Python环境管理--virtualenvwrapper

    遇到问题: 当最近的开发和部署过程中,多个服务器部署的时候发现对于库和包的管理非常混乱,主要有俩个版本问题: 因为业务需要,代码得分别部署在不同的服务器上面,每次部署的时候都得重复的安装包而且不能确定 ...

  2. POJ3279 搜索/思维

    Fliptile Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 10457   Accepted: 3866 Descrip ...

  3. 快速切题 sgu134.Centroid 树形dp

    134. Centroid time limit per test: 0.25 sec. memory limit per test: 4096 KB You are given an undirec ...

  4. SGU 140. Integer Sequences 线性同余,数论 难度:2

    140. Integer Sequences time limit per test: 0.25 sec. memory limit per test: 4096 KB A sequence A is ...

  5. 谈谈我对"闭包"的理解

    一.什么是闭包和闭包的几种写法和用法 1.什么是闭包闭包,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分.闭包的特点: 1. 作 ...

  6. Windows下MySQL多实例运行

    1.正常安装Windows版的MySQL,例如安装在C:\Program Files\MySQL文件夹里: 2.按照常规配置好MySQL: (注:5.6版本的 data文件夹与 my.ini文件在C: ...

  7. asp.net textbox等服务器控件包含html代码的时候,提交会报错

    asp.net  textbox等服务器控件包含html代码的时候,提交会报错,页面中的其他按钮点击的时候也会报错误, 解决方法: Page里加上这个属性 ValidateRequest=" ...

  8. cuDnn的安装ubuntu16.04环境下(tensorflow正式安装之前的必备安装操作)

    首先,下载cuDnn,地址如下: https://developer.nvidia.com/rdp/cudnn-archive 本人下载,Linux版本: 解压: tar -zxvf cudnn-8. ...

  9. mt7601u: probe of xxxx failed with error -2

    /************************************************************************ * mt7601u: probe of xxxx f ...

  10. java面试题11

    第九次面试题 1. GC是什么?为什么要有GC? GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩 ...