zoukankan      html  css  js  c++  java
  • selenium04-简单的 xpath 表达式

    有时候会遇到元素属性不带 id 和 name,或者遇到动态 id,且不能使用 link_text 进行元素定位时,使用 css_selector 定位或 xpath 定位就很适合。

    虽然多数情况下,浏览器审查元素本身都支持直接提取 xpath 路径,但有时候也会出现提取出的 xpath 错误的情况,所以对 xpath 表达式稍微了解有益于对错误的 xpath 表达式的分辨,以及手动去更改。

    当然,这里只列举一些简单的 xpath 路径表达式 

    /AAA  #选择根节点 AAA

    /AAA/BBB  #根据绝对路径选择元素

    /AAA/CCC/DDD/*  #选择 /AAA/CCC/DDD/ 下所有元素

    /*/*/*/BBB  #选择有3个祖先元素的 BBB 元素

    /AAA/BBB[1]  #选择AAA的第一个BBB 子元素

    /AAA/BBB[last()]  #选择AAA的最后一个BBB 子元素

    //*  #选择所有元素

    //AAA  #扫描整个文档,找出所有 AAA 元素

    //AAA/BBB  #所有父元素为 AAA 的 BBB 元素

    //AAA[@id]  #所有有 id 属性的 AAA 元素

    //AAA[@id=BBB]  #所有有 id 属性为 BBB 的 AAA 元素

    //BBB[@*]  #选择有任意属性的 BBB 元素

    //*[count(BBB)=2]  #选择含有2个 BBB 子元素的元素

    //*[count(*)=2]  #选择含有2个子元素的元素

    //BBB[not (@*)]  #选择没有属性的 BBB 元素

    //*[local-name()='AAA']  #找到 tag 为 AAA 的元素

    //*[starts-with(local-name()), 'AAA']  #找到所有 tag 以 AAA 开头的元素

    //*[contains(local-name(), 'AAA')]  #找到所有 tag 包含 AAA 的元素

    //*[string-length(local-name()) = 3]  #找到所有 tag 长度为3的元素

    |  #多个路径合并在一起,其实就相当于“与或非”中的“或”。例:

    //CCC|//BBB  #选择所有的 CCC 和 BBB 元素

    name()  #返回元素名称

    start-with(A, B)  #接受两个参数,A 是以 B 为开始的

    contains(A, B)  #接受两个参数,A 是包含 B 的

    //*[name()=BBB]  # name 名称为 BBB 的元素

    //*[starts-with(name(),B)]  #所有 name 名称为以 起始的元素

    //*[contains(name(),C)]  #所有 name 名称包含 的元素

  • 相关阅读:
    C++调用C#类库函数
    C# DataSet转JSON
    抽象工厂模式
    工厂方法模式
    简单工厂模式
    jsp页面中的EL表达式不被解析org.apache.jasper.JasperException: Unable to convert string [${item.createtime}]
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory'
    mybatis第二天
    MyBatis入门
    js自动访问数据库
  • 原文地址:https://www.cnblogs.com/maigeyouziba/p/11192561.html
Copyright © 2011-2022 走看看