• 元素定位总结/定位原则/XPATH定位/find_element


    定位辅助工具:

    chrome:一,自带的ctrl+f 二,ChroPath插件
    firefox:firebug插件

    定位原则:

    1,不依靠节点顺序和节点位置。
    2,只要能够找得到匹配特征的元素久可以。
    3,有id尽量用,尽量定位到要操作的元素上。
    4,定位选取时分析页面结构,考虑属性不会变化,稳定的不变的,有代表性。

    8种定位策略:

    ID:id是指页面元素的属性名id值,因为元素id在整个页面中是唯一的,所以如果元素有id属性,通过id定位是首选的方式。如果id不唯一则不建议使用。对应定位方法:find_element_by_id
    NAME:通过元素的name属性进行定位。对应定位方法:find_element_by_name
    CLASS NAME:通过元素的class name属性进行定位。对应定位方法:find_element_by_class_name
    TAG NAME:通过元素名定位,基本不用,因为相同的tagname太多。对应定位方法:find_element_by_tag_name
    LINK_TEXT:通过链接文本内容全匹配。对应定位方法:find_element_by_link_text
    PARTIAL LINK:通过链接文本内容模糊匹配。对应定位方法:find_element_by_partial_link_text
    CSS:css_selector定位。对应定位方法:find_element_by_css_selector
    XPATH:通过xpath表达式定位。对应定位方法:find_element_by_xpath

    XPATH定位:

    基本语法:

    / 绝对定位,从根节点选取

    // 相对定位,从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置。

    . 选取当前节点

    .. 选取当前节点的父

    @ 选取属性。@class="xxx" @id="xxx"。属性放在中括号[]中

    • 通配符。匹配所有标签

    @* 匹配所有属性

    绝对定位:

    /开头  父节点/子节点关系
    

    相对定位:

    //开头 后可以接//
    

    对比优缺点:页面元素一旦发生变化,绝对路径就会失效。
    所以一般不适用绝对路径来定位元素。

    定位方式:

    1,使用标签名+节点属性定位, //标签名[@属性名=值]
    2,使用文本匹配定位,//标签名[text()=值]
    3,模糊匹配(包含),//标签名[contains(@属性/text(),值)]
    4,逻辑运算 and or,//标签名[@属性=值 and contains(@属性,值) and text()=值]
    5,层级定位,//一级元素//二级元素//N级元素
    6,组合元素索引(下标)定位,//li[@class="num"][2]//img
    7,轴定位:常用4种
    ancestor:祖先节点 包括父
    parent:父节点
    preceding-sibling:当前元素节点标签之前的所有兄弟节点
    following-sibling:当前元素节点标签之后的所有兄弟节点 #要找的元素是已知的后边元素

    find_element和find_elements:

    源码中,8大定位方式实际都是调用driver.find_element(by, value),直接使用这个方法框架中使用时会更加灵活一些。使用时要导入By类:from selenium.webdriver.common.by import By
    find_element(By.定位策略,定位表达式),返回的是WebElement对象。
    find_elements(By.定位策略,定位表达式),返回时一个对象列表。

    难者不会 会者不难 学是关键
  • 相关阅读:
    数据库分区、分表、分库、分片
    C# 创建Windows Service(Windows服务)程序
    C# 自定义控件容器,设计时可添加控件
    redis配置文件中常用配置详解
    将博客搬至CSDN
    MD5加密之加密字符串
    MD5加密之提取文件的MD5特征码
    安卓手机下拉状态栏的代码实现
    Android中四大组件总结
    Android中内容提供者ContentProvider的详解
  • 原文地址:https://www.cnblogs.com/hsmwm/p/14931016.html
Copyright © 2020-2023  润新知