java selenium (六) XPath 定位

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

什么是xpath

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

xpath定位的缺点

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

testXpath.html 代码如下

<html>
<head><title>Test Xpathtitle>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语句

java selenium (六) 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']"));

undefined

模糊定位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(),'搜索')]"));

Original: https://www.cnblogs.com/TankXiao/p/5253072.html
Author: 小坦克
Title: java selenium (六) XPath 定位

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/537357/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 『硬核』Spring完整版学习笔记,动力节点王鹤

    Spring学习笔记(来自王鹤老师讲的最新版Spring) spring笔记官方下载地址:动力节点官网 视频观看地址 https://www.bilibili.com/video/…

    Java 2023年6月9日
    055
  • 项目版本管理Git使用详细教程

    前言 记得刚开始做项目开发的时候都是一个人完成一个项目,单打独斗的开发,也不知道什么是团队开发,没有这个概念,随着工作后来知道公司里项目都是团队开发,这个时候这么多人怎么开发一个项…

    Java 2023年6月13日
    0100
  • Yapi Docker 部署

    docker run \ –name mongod \ -p 27017:27017 \ -v /data/opt/mongodb/data/configdb:/data/con…

    Java 2023年6月6日
    074
  • 实现多项式的JAVA类

    1 package practice;2 // http://introcs.cs.princeton.edu/java/92symbolic/Polynomial.java.ht…

    Java 2023年5月29日
    071
  • SpringMvc(一)-初识

    1、环境搭建 1.1 jar包 4.3.18.RELEASE org.springframework spring-web ${spring.version} org.spring…

    Java 2023年6月15日
    068
  • 关于SpringMVC拦截器执行两遍的原因分析以及如何解决

    什么情况下HandlerInterceptor会执行两遍? 拦截器拦截了静态资源请求 先上代码: 1 package com.atwu.miao.intercepter; 2 3 …

    Java 2023年5月30日
    0112
  • SpringMvc自动任务调度之task实现项目源码,@Scheduled

    1.Xml配置 Spring-job.xml 并在 Spring-Application.xml中Import 2.类文件TASK.java 然后就可以了; 原文地址:https:…

    Java 2023年5月30日
    071
  • AOP面向切面

    AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是…

    Java 2023年6月5日
    0102
  • springboot读取resources下文件方式

    之前使用读取resources下的json文件,后来发现不通用,在这里做一些记录。 打成jar包之后,没有办法读取里面的路径。使用流的方式进行 一:实践 1.说明 使用了org.s…

    Java 2023年5月30日
    068
  • [Java]HashMap源码解析

    构造函数 // 默认构造函数。 public HashMap() { this.loadFactor = DEFAULT_LOAD_FACTOR; // all other fie…

    Java 2023年6月5日
    081
  • jsp中写java代码的方法

    Original: https://www.cnblogs.com/muhy/p/14827695.htmlAuthor: 永恒的回忆Title: jsp中写java代码的方法

    Java 2023年5月29日
    079
  • 深入浅出的分析 Set集合

    作者:炸鸡可乐原文出处:www.pzblog.cn 一、摘要 关于 Set 接口,在实际开发中,其实很少用到,但是如果你出去面试,它可能依然是一个绕不开的话题。 言归正传,废话咱们…

    Java 2023年6月9日
    099
  • Node.js(三)Lodash

    npm init -y(初始化项目) npm i –save lodash(引入lodash) const _=require("lodash");…

    Java 2023年6月15日
    079
  • 根据表结构自动生成JavaBean,史上最强最专业的表结构转JavaBean的工具(第11版)

    第11版更新震撼发布,功能更加强大,速度过来围观,此次版本更新如下: 1、新增数据源配置管理功能,可以为每种类型的数据库添加多个不同的数据源。 2、新增快速新增数据源功能,快速为当…

    Java 2023年6月9日
    087
  • 老徐和阿珍的故事:CAP是什么?超级爱放P吗?

    人物背景:老徐,男,本名徐福贵,从事Java相关研发工作多年,职场老油条,摸鱼小能手,虽然岁数不大但长的比较着急,人称老徐。据说之前炒某币败光了所有家产,甚至现在还有欠债。阿珍,女…

    Java 2023年6月7日
    085
  • java 入门如何设计类

    2019/12/24 | 在校大二上学期 | 太原科技大学 初学java后,我们会发现java难点不在于Java语法难学,而是把我们挂在了如何设计类的”吊绳&#8221…

    Java 2023年6月9日
    081
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球