zoukankan      html  css  js  c++  java
  • 关于selenium的8种元素定位

    selenium中有八种元素定位,分别是:id,name,class_name,tag_name,link_text、partial_link_text、xpath、css

    简单的定位可以用 id、name、class_name、tag_name等,如果遇到复杂的元素需要定位则要使用xpath、或者css定位
    下面是每种定位的用法——拿百度来说

    1、id——定位到百度的输入框,可以看到百度的输入框id是唯一的,具体可以看下图

     在pycharm中,语句是:driver.find_element_by_id("kw").send_keys("selenium")

     send_keys 表示在输入框中输入文本

    2、name——还是以百度输入框为例,可以看出百度输入框的name属性也是唯一的 

    在pycharm 中语句是:

    driver.find_element_by_name("wd").send_keys("selenium")

    3、class_name——“百度一下”按钮,可以看出这个的class_name 是唯一的

    在pycharm中的语句是:driver.find_element_by_class_name("bg s_btn").click()

    4、tag_name——标签名称 

     这个方法很少用到,一般用xpath/css比较多

    5、link_text——用来定位文本链接的
    比如定位百度中的新闻:driver.find_element_by_link_text("新闻").click()
    6、partial_link_text:和link_text 相似,唯一不同的是定位部分文本
    如:点击hao123——driver.find_element_by_partial_link_text("hao").click()

    7、xpath
    (1)用xpath对标签内的属性进行定位(id、name、class)
    方法://标签名[@属性="属性名"] 双引号也可以用单引号表示
    当某个元素的属性不是唯一的时候,需要采用组合的方式定位:
    "//标签名[@属性='属性名' and @属性='属性名']"

    (2)用text()方法定位
    //标签名[text()="XXXX"]

    (3)模糊定位——contains()方法定位
    //标签名[contains(@属性,"属性值")]

    (4)轴定位(下图来自http://www.runoob.com/xpath/xpath-axes.html)
    轴名称结果
    ancestor 选取当前节点的所有先辈(父、祖父等)。
    ancestor-or-self 选取当前节点的所有先辈(父、祖父等)以及当前节点本身。
    attribute 选取当前节点的所有属性。
    child 选取当前节点的所有子元素。
    descendant 选取当前节点的所有后代元素(子、孙等)。
    descendant-or-self 选取当前节点的所有后代元素(子、孙等)以及当前节点本身。
    following 选取文档中当前节点的结束标签之后的所有节点。
    following-sibling 选取当前节点之后的所有兄弟节点
    namespace 选取当前节点的所有命名空间节点。
    parent 选取当前节点的父节点。
    preceding 选取文档中当前节点的开始标签之前的所有节点。
    preceding-sibling 选取当前节点之前的所有同级节点。
    self 选取当前节点。

    通过轴定位定位“百度一下”按钮 首先定位到这个按钮,可以看到这是个input标签,input标签的父元素是span标签,span标签的父元素是form标签,那么我们可以从form标签开始定位然后通过descendant来找到它的后代input
    //form[@id='form']/descendant::input[@id='su']
    
    

    通过following 来定位——following 表示标签节点之后
    //span[@id='s_kw_wrap']/following::input[@id='su']
    //span[@id='s_kw_wrap']表示定位到id属性为s_kw_wrap的<span>标签,/following::input[@id='su']表示找到<span>结束标签(即</span>)后的所有input标签,然后通过[@id='su']精准定位到id属性为'su'的<input>标签

    parent::可指定要查找的当前节点的直接父节点,例如,父节点是个div,即可写成parent::div,如果要找的元素不是直接父元素,则不可使用parent,可使用ancestor,代表父辈、祖父辈等节点;

    child::表示直接子节点元素

    following-sibling只会标识出当前节点结束标签之后的兄弟节点,而不包含其他子节点






    
    



  • 相关阅读:
    [基础]RHEL6下LINUX服务器批量部署
    delphi 连接 c++ builder 生成obj文件
    Delphi基本图像处理代码
    Delphi 版本号(D1到XE6),发现一个delphi.wikia.com网站
    Delphi常用排序
    Delphi中用Webbrowser加载百度地图滚轮失效(ApplicationEvents里使用IsChild提前判断是哪个控件的消息)
    判断连个单链表是否交叉,并找到交叉点
    窗体自适应屏幕分辨率
    Zlib压缩算法在Java与Delphi间交互实现(压缩XML交互)
    开机自动启动程序的几种方法
  • 原文地址:https://www.cnblogs.com/xiaohanzi/p/9946695.html
Copyright © 2011-2022 走看看