• Selenium之用xpath定位元素


    selenium中有8种方式可以定位元素,分别为:ID、XPATH、LINK_TEXT、PARTIAL_LINK_TEXT、NAME、TAG_NAME、CLASS_NAME、CSS_SELECTOR,本文记录XPATH的使用方法。

    根据路径选择

    绝对路径

    从根路径即html开始一层一层的往下找,即绝对路径。例如百度首页的按钮:

    /html/body/div[1]/div[1]/div[5]/div/div/form/span[2]/input

    相对路径

    即相对于其他路径而写的xpath。例如id为form的元素下的所有span子元素:

    //*[@id="form"]/span

    根据属性选择

    常用属性有class、name、text等。举例说明:

    表达式 说明

    //span[@class='tools'] 

    class等于tools的span元素。(注意:是等于!)
    //div[contains(@class,"submit")] class包含submit的div元素。(注意:是包含!)
    //a[contains(text(),'取消')] 文本内容包含"取消"的a元素
    //input[@name='mobile'] name等于mobile的input元素
    //input[@name="item"][not(@disabled)]/.. name等于item且没有disabled属性的input元素的父元素
     //*[@type='hidden'] type属性等于hidden所有元素。(注意通配符*)
     //input[@formcontrolname="username"] formcontrolname属性等于username的input
     ......

    ......

    *只要是有的属性都可以,不一定是要自己见过的;

    *可以写多个属性,表示都需要满足;

    *用xpath可以实现所有情况的定位啊,超好用;

    根据第几个来选择

    根据找到的元素本身取,用(xpath)[1]

    比如博客园的登录页面,根据xpath  //div[@class="mat-tab-label-content"]可以定位到两个元素,“密码登录”和“短信登录”;若只想取第一个,即密码登录,则用 (//div[@class="mat-tab-label-content"])[1];若只想取第二个,即短信的登录,则用(//div[@class="mat-tab-label-content"])[2]

    背景颜色:#FFEFD5

    组选择、父节点、兄弟节点

    组选择

    加上符号   |   即可。例如要选择所有的p元素和h4元素:

    //p | //h4

    父节点

    某个元素的父节点用 /..   来选择。例如要选择百度首页id为su的元素的父节点:

    //*[@id='su']/..

    上上级父节点可以加多个/..,例如://*[@id='su']/../..

    兄弟节点

    选择后续的兄弟节点,可以使用:following-sibling:: 

    1、后续所有兄弟节点:

    //*[@name='ie']/following-sibling::*

    2、后续的所有兄弟节点中的span元素:

    //*[@name='ie']/following-sibling::span

    3、后续的所有兄弟节点中的span元素且span元素的class包含bg:

    //*[@name='ie']/following-sibling::span[contains(@class,'bg')]

    选择前面的兄弟节点,可以使用:preceding-sibling:: 

    例如://input[@name='f']/preceding-sibling::*

    End.

  • 相关阅读:
    去除UINavigationBar的下边框
    struts2配置log
    GET和POST方式的乱码问题
    Eclipse中导入MyEclipse生成的war包
    TOMCAT管理页面部署WAR包 大小超出上限
    Java死锁 Thread Dump分析
    自定义标签之IterationTag
    Chart.js学习
    计数排序
    练手系列之旋转字符串
  • 原文地址:https://www.cnblogs.com/youreyebows/p/13958492.html
Copyright © 2020-2023  润新知