zoukankan      html  css  js  c++  java
  • 关于Xpath

    1.xPath简介

    XPath是一门在XML和HTML文档中查找信息的语言,可以用来在XML和HTML文档中对元素和属性进行遍历

    XPath的安装

    Chrome插件XPath Helper

    点Chrome浏览器右上角:更多工具-----扩展程序-----谷歌商店--------勾选XPath Helper(需要翻墙)

    2.语法详解

    Xpath节点类型:

    元素、属性、文本、命名空间、指令处理、注释及文档

    Xpath:通过路径表达式从XML文档中选取节点或节点位置

    方法:首先找目录元素是否有”精准元素“即唯一能标识的属性,找到,则用此属性定位;

    1. 通过元素本身的唯一属性定位

       方法:找到目标元素所在的”精准元素“即唯一标识属性,使用此属性定位

    • 1.1 通过id属性定位
    • 例:find_element_by_xpath("//input[@id='input']")      #@后跟属性,可以是任何属性
    • 1.2 通过name属性定位
    •      例:find_element_by_xpath("//div[@name='q']")

      2. 通过上一级目录的唯一属性定位

        方法:目标元素没有唯一属性,则去找到与目标元素相近的上级目录中”唯一元素“作为起始位置,然后根据此相对位置逐层往子目录编写到目标位置

    例:

    find_element_by_xpath("//span[@id='input-container']/input") 
    
    find_element_by_xpath("//div[@id='hd']/form/span/input")
    
    find_element_by_xpath("//div[@name='q']/form/span/input")

    3.  xpath做布尔逻辑运算

    find_element_by_xpath("//div[@id='hd' or @name='q']")#查找id为hd或name为q的

    4. 双条件同时过滤

    find_element_by_xpath("//div[@id='hd'][@name='q'")

    5.目录元素存在层级关系

    例1:

     find_element_by_xpath("//ul[@class='app-list']/li[contains(@class,'safe')]/div")

    例2:定位上一层再定位目标元素(定位dl再定位dt)

    find_element_by_xpath("//form[@id='J_login_form]/dl/dt/input[@id='J_password']") 

    6. 模糊定位

    6.1 contains 方法(包含)

    find_element_by_xpath("//a[contains(@name,'trnews')]")#获取元素为trnews的方法

    6.2 start-with方法(以XX开头)

    find_element_by_xpath("//a[start-with(@href,'http')]")#选取以http开头的元素

    6.3 text方法

    find_element_by_xpath("//a[contains(text(),'新闻')]")  查找超链接元素的文本内容
    find_element_by_xpath("//*[text()='新闻']")  查找所有内容为退出二字的元素

    7、xpath的一些包含逻辑的用法

    //*[count(XXX)=2] //统计XXX元素个数=2的节点
    //*[local-name()='xxx'] //找到tag为xxx的元素
    //*[starts-with(local-name(),'x')] //找到所有tag以x开头的元素
    //*[contains(local-name(),'x')] //找到所有tag包含x的元素
    //*[string-length(local-name())=3] //找到所有tag长度为3的元素
    //xxx | //yyy //多个路径查找
  • 相关阅读:
    装饰器
    提供离线chrome谷歌浏览器插件crx的网站有
    关于使用AWS上的RHEL8.x/Redhat系统使用自己单独购买的Redhat官网license导致的yum命令报错处理
    关于aws账单数据中几个重要的与费用相关的字段的意义分析
    在vCenter或者ESXi中通过ova/ovf进行还原部署虚拟机的过程记录
    关于python爬虫request.get()方法的常用参数
    关于aws cli命令的exit/return code分析
    关于pycharm代码运行后控制台的输出不完整被截断的处理
    关于变量的值中包含另一个变量引用的处理间接变量引用
    关于在python中使用pandas模块将列表list/元组tuple写入excel中
  • 原文地址:https://www.cnblogs.com/qq991025/p/12076590.html
Copyright © 2011-2022 走看看