• 【Selenium】HTML/XML/XPATH基础


    Html超文本标记语言

    网页上单击右键→查看源文件/查看源代码

    Html基本结构

    <html>               为文档根元素,所有元素都在内部进行

      <head>         文档的头信息,不会在浏览器上显示

        ……

      </head>

      <body>         文档正文,显示浏览器上

        ……

      </body>

    </html>

    head中使用标签

    <tittle></tittle>文档题目显示在标题栏中

    <script></script>

    <style></style>引用CSS样式

    XML可扩展标记语言

    http://www.yesky.com/imagesnew/software/html/index.html

    XPath  xml文档中查找信息的一种语言

    http:www.w3school.com.cn/xpath/index.asp

    /以斜线开始路径实例1

     <AAA>               

      <BBB/>        

      <CCC/>

      <DDD>  

        <BBB/>     

      </DDD>

      <CCC/>

    </AAA>                      XPath表达式:/AAA  选择根元素AAA

    /以斜线开始路径实例2

    <AAA>               

      <BBB/>        

      <CCC/>

      <DDD>  

        <BBB/>     

      </DDD>

      <CCC/>

    </AAA>                       XPath表达式:/AAA/CCC  选择AAA的子元素CCC

    /以斜线开始路径实例3

    <AAA>               

      <BBB/>        

      <CCC/>

      <DDD>  

        <BBB/>     

      </DDD>

      <CCC/>

    </AAA>                       XPath表达式:/AAA/DDD/BBB  选择AAA的子元素DDD的子元素BBB               绝对路径

    //以双斜线开始路径实例1

    <AAA>               

      <BBB/>        

      <CCC/>

      <BBB/>

      <DDD>  

        <BBB/>     

      </DDD>

    <CCC/>

      <DDD>  

        <BBB/> 

        <BBB/> 

      </DDD>

    <CCC/>

    </AAA>                              XPath表达式://BBB  选择所有BBB元素

    //以双斜线开始路径实例2

    <AAA>               

      <BBB/>        

      <CCC/>

      <BBB/>

      <DDD>  

        <BBB/>     

      </DDD>

    <CCC/>

      <DDD>  

        <BBB/>   

        <BBB/> 

      </DDD>

    <CCC/>

    </AAA>                          XPath表达式://DDD/BBB  选择所有父元素是DDD的BBB元素                       相对路径

    *以星号开始路径实例1

    <AAA>                    

      <CCC/>

        <DDD>  

          <BBB/>  

          <BBB/>   

          <EEE/>  

          <EEE/>

        </DDD>

      <CCC/>

    </AAA>                                      XPath表达式:/AAA/CCC/DDD/*  选择所有路径依附于/AAA/CCC/DDD/的元素

    *以星号开始路径实例2

    <AAA>                    

      <XXX/>

        <DDD>  

          <BBB/>  

          <BBB/>   

          <EEE/>  

        </DDD>

      <XXX/>

      <CCC/>

        <BBB>  

          <BBB/>  

            <BBB/>   

          <BBB/>  

        <BBB/>

      <CCC/>

    </AAA>                                     XPath表达式:/*/*/*/BBB  选择所有有3个祖先元素的BBB元素

    *以星号开始路径实例3

    <AAA>                    

      <CCC/>

        </DDD>

      <CCC/>

    </AAA>                                  XPath表达式://*  选择所有元素

    []使用方括号限定元素实例1

    <AAA>                    

      <BBB/>

      <BBB/>

      <BBB/>

    </AAA>                                  XPath表达式:/AAA/BBB[1]  选择AAA的第一个BBB子元素

    []使用方括号限定元素实例2  索引号

    <AAA>                    

      <BBB/>

      <BBB/>

      <BBB/>

    </AAA>                                  XPath表达式:/AAA/BBB[last()]  选择AAA的最后一个BBB子元素

    [position<3]最前面两个 

    [price>35.00]

    @通过@指定属性实例1

    <AAA>                    

      <BBB id=“b1”/>

      <BBB id=“b2”/>

      <BBB name=“bbb”/>

      <BBB/>

    </AAA>                                  XPath表达式://@id  选择所有的id属性(注意,选取的是元素的属性,而不是元素)

    @通过@指定属性实例2

    <AAA>                    

      <BBB id=“b1”/>

      <BBB id=“b2”/>

      <BBB name=“bbb”/>

      <BBB/>

    </AAA>                                  XPath表达式://BBB[@id]  选择所有id属性的BBB元素(//BBB[@name]  选择所有name属性的BBB元素)

    @通过@指定属性实例3

    <AAA>                    

      <BBB id=“b1”/>

      <BBB id=“b2”/>

      <BBB name=“bbb”/>

      <BBB/>

    </AAA>                                  XPath表达式://BBB[@*]  选择有任意属性的BBB元素

    @通过@指定属性实例4

    <AAA>                    

      <BBB id=“b1”/>

      <BBB id=“b2”/>

      <BBB name=“bbb”/>

      <BBB/>

    </AAA>                                  XPath表达式://BBB[not(@*)]  选则没有属性的BBB元素

    使用属性值作为选择准则1

    <AAA>                    

      <BBB id=“b1”/>

      <BBB id=“b2”/>

      <BBB name=“bbb”/>

      <BBB/>

    </AAA>                                  XPath表达式://BBB[@id='b1']  选则含有属性id=‘b1’的BBB元素

    使用模糊属性定位元素

    //img[Starts-with(@alt,'dic1')                查找图片alt属性开始位置包含“div1”关键字的页面元素

    //img[contains(@alt,'g1')]                     查找图片alt属性包含“g1”关键字的页面元素

    |使用分隔符“|”合并多个路径实例1

    <AAA>               

      <BBB/>        

      <CCC/>

      <DDD>  

        <CCC/>     

      </DDD>

      <EEE/>

    </AAA>                       XPath表达式:/AAA/EEE|//DDD/CCC|AAA|//BBB  合并没有限制

    使用页面元素文本的文本来定位

    //a[text()='百度搜索']:文字匹配

    //a[contains(text(),'百度')],包含文字

    //aa[contains(text(),'百度')]/preceding::div

    XPath轴(Axis)

    parent:上层父节点             //img[@alt='div2-img2']/parent::div          查找到alt属性值为div2-img2的图片,并基于图片位置找到他上一级的div页面元素

    clild    :当前节点的下层子节点             //img[@id='div1']child::img                       查找到id属性值为div1的div页面元素,并基于div的位置找到他下层节点中img页面元素

    child::text():当前节点的所有文本子节点

    child::node():当前节点的所有子节点

    child::*/child::price:当前节点的所有 price 孙节点

    ancestor:当前节点所有上层节点         //img[@alt='div2-img2']/ancestor::div       查找到alt属性值为div2-img2的图片,并基于图片位置找到他上级的div页面元素

    ancestor-or-self:当前节点的所有先辈(父、祖父等)以及当前节点本身

    descendant:当前节点所有下层节点     //img[@name='div2']/descendant::img      查找到name属性值为div页面元素,并基于div的位置找到他下级所有节点中的img页面元素

    descendant-or-self:当前节点的所有后代元素(子、孙等)以及当前节点本身。

    following:当前节点之后显示的所有节点  //div[@id='div1']/following::img              查找到id属性值为div1的div页面元素,并基于div位置找到他后面节点的img页面元素

    following-sibling:当前节点的之后所有平级节点//a[@href='www.com']/following-sibling::input查找到链接的页面元素,并基于链接位置找到他后面节点中的input页面元素

    preceding:当前节点前面的所有节点  //img[@alt='div2-img2']/preceding::div       查找到alt属性值为div2-img2的图片,并基于图片位置找到他前面节点的div页面元素

    preceding-sibling:当前节点前面的所有平级节点//img[@alt='div2-img2']/preceding-sibling::a[1]查找属性为div2-img2的图片,并基于图片位置找到他前面平级节点中的页面元素

    attribute:当前节点的所有属性。

    namespace:当前节点的所有命名空间节点。

    self:当前节点。

    运算符

    | 计算两个节点集 //book | //cd 返回所有拥有 book 和 cd 元素的节点集
    + 加法 6 + 4 10
    - 减法 6 - 4 2
    * 乘法 6 * 4 24
    div 除法 8 div 4 2
    = 等于 price=9.80

    如果 price 是 9.80,则返回 true。

    如果 price 是 9.90,则返回 false。

    != 不等于 price!=9.80

    如果 price 是 9.90,则返回 true。

    如果 price 是 9.80,则返回 false。

    < 小于 price<9.80

    如果 price 是 9.00,则返回 true。

    如果 price 是 9.90,则返回 false。

    <= 小于或等于 price<=9.80

    如果 price 是 9.00,则返回 true。

    如果 price 是 9.90,则返回 false。

    > 大于 price>9.80

    如果 price 是 9.90,则返回 true。

    如果 price 是 9.80,则返回 false。

    >= 大于或等于 price>=9.80

    如果 price 是 9.90,则返回 true。

    如果 price 是 9.70,则返回 false。

    or price=9.80 or price=9.70

    如果 price 是 9.80,则返回 true。

    如果 price 是 9.50,则返回 false。

    and price>9.00 and price<9.90

    如果 price 是 9.80,则返回 true。

    如果 price 是 8.50,则返回 false。

    mod 计算除法的余数 5 mod 2 1
  • 相关阅读:
    Maven版本问题导致的 unable to import maven project, see logs for details. 问题
    Java时间的转换
    idea中添加类和方法注释以及codeCheck
    使用Java语言递归删除目录下面产生的临时文件
    Oracle VirtualBox添加虚拟机
    java使用JMail通过QQ邮件服务器实现自动发送邮件
    linux下&、nohup与screen的比较
    InputStream流无法重复读取的解决办法
    使用Java POI来选择提取Word文档中的表格信息
    Java实现压缩文件与解压缩文件
  • 原文地址:https://www.cnblogs.com/baoyu7yi/p/6898393.html
Copyright © 2020-2023  润新知