闲逸笔记

keep it simple & stupid

Selenium WebDriver 自动化测试之 XPath

XPath 可以解决绝大部分 Web 元素的定位问题。

  • 所有的 input 标签

    //input
    
  • 所有的属性 type='hidden' 的 input

    //input[@type='hidden']
    
  • 所有的属性 type='hidden' 并且 name='ren' 的 input

    //input[@type='hidden'][@name='ren']
    
  • 所有的属性 type 包含 hid 字符串的 input

    //input[contains(@type,'hid')]
    
  • 属性 type 以 hid 字符串开头的所有的 input

    //input[starts-with(@type,'hid')]
    
  • innertext 的值为 Password 的所有元素

    //*[text()='Password']
    
    注:innertext 为元素标签中间的值。如:
    <lable>this is innertext</label>
    
  • innertext 的值为 Gender 的 label 元素后面的所有同级元素

    //label[text()='Gender']//following-sibling::*
    
    举例:
    <body>
        <h1>H1</h1>
        <label>Gender</label>
        <div>
            <p>P</p>
        </div>
        <input type="text" />
    </body>
    在此匹配的是 div 和 input 这两个元素。
    
  • innertext 的值为 Gender 的 label 元素前面的所有同级元素

    //label[text()='Gender']//preceding-sibling::*
    
    举例:
    <body>
        <h1>H1</h1>
        <label>Gender</label>
        <div>
            <p>P</p>
        </div>
        <input type="text" />
    </body>
    匹配的是 h1 元素。
    
  • innertext 的值为 Gender 的 label 元素后面的所有同级元素中的第二个元素的所有子元素

    //label[text()='Gender']//following-sibling::*[2]//*
    
  • innertext 的值为 Gender 的 label 元素后面的所有同级元素中的第二个元素的第一个 input 子元素

    //label[text()='Gender']//following-sibling::*[2]//input
    
  • 子元素 span 的 innertext 包含 abc 的 label

    //label[span[contains(text(),'abc')]]
    
    举例:
    <label>
        <span>this contains abc</span>
    </label>
    匹配此 label 元素。
    

参考资料


Permalink [http://sleepycat.org/blog/34]


发表评论

top bottom