zoukankan      html  css  js  c++  java
  • xpath对比css定位

    ## 元素找不到可能的原因(实战技巧)
    - 元素定位的表达式不对。
    - 没有等待,或者是等待时间太少
    - 你根本不在这个页面。(另外一个窗口,在一个iframe当中。)


    ## 元素定位不要用动态生成值
    如果属性存在以下特征,最好不要用该值作为元素定位的依据:
    - 属性值有数字 12
    - 不认识的莫名其妙的字符串,(加密) , 也有可能动态生成
    - class 里面 active hidden


    ## xpath
    1、为什么要用它
    2、实战当中采取什么样的策略去编写 xpath 表达式
    3、xpath 基础语法
    - 绝对路径, 相对路径
    - 标签
    - 属性
    - text 文本
    - 函数
    - 索引
    - 元素之间的关系
    - 父子
    - 祖先和子孙后代
    - 同辈
    - 轴运算

    ## 1、为什么要用它
    - 没有 id, name 属性
    - 通过 class , tagname 找到的不是唯一的
    - link text 只能去定位 a


    xpath 为什么功能强:
    可以组合多个条件,标签名,属性,text, 元素之间的关系

    ### 绝对路径和相对路径
    // 相对路径
    / 绝对路径(不用)


    ## 相对路径

    //*[@id="kw"]
    * 是表示任意的标签名称 //input[@id="kw"]

    完整xpath的基本语法:
    ```
    //标签名[@属性名="属性值"]
    ```

    xpath 验证:
    在源码页面按 ctrl + f 会出现 xpath 输入框
    后面能看到你的表达式具体能够得到多少个元素。


    ## 实战当中采取什么样的策略去编写 xpath 表达式
    - 1、通过浏览器的右击,复制xpath 表达式
    - 2、第三方工具chropath


    ## xpath 详细语法
    //input[@id="kw"]

    文本: //a[text()='抢投标'] ==>
    套路 包含某个文本 contains //a[contains(text(), '强投标')]
    //a[contains(@id, 'kw')]


    属性或text组合 //a[text()='抢投标' and @id="kw" and @name='wd']
    xpath 索引是从1开头: (//input[@id and @name])[1]

    通过祖先找子孙: //form[@id='form']//input[@name='wd']
    通过父亲找儿子: //form[@id='form']/input[@name='wd']

    通过儿子找父亲: //sub/..
    通过儿子找祖父: //sub/../..


    轴运算:
    找找哥哥姐姐: //input[@name='wd']/preceding-sibling::span
    找找弟弟妹妹: //input[@name='wd']/following-sibling::span
    找祖先: //input[@name='wd']/ancestor::span

    - 绝对路径, 相对路径
    - 标签
    - 属性
    - text 文本
    - 函数
    - 索引
    - 元素之间的关系
    - 父子
    - 祖先和子孙后代
    - 同辈
    - 轴运算


    ## 总结xpath
    1、 浏览器右击复制、chropath 第三方库
    2、 检查xpath好的xpath: 层级比较少 1-2
    3、 xpath 找到元素验证:ctrl + f
    4、 //input[@id='kw'] 基本
    5、 //input[@id='kw' and @name='wd'] and
    6、 //input[@id='kw' and text()='wd'] text
    7、 //input[contains(text(), '')] contains
    8、 (//*[contains(text(), '')])[1] 索引
    9、 //form//input[] 通过祖先找子孙


    ## 找元素常见错误
    selenium.common.exceptions.NoSuchElementException



    ## css 选择器
    css : html + css + JavaScript(js)
    css 选择器

    css 选择器的基本语法
    id:
    - xpath: //input[@id='kw']
    - css: input#kw 或者 #kw 在css里用#表示id

    class:
    - xpath: //input[@class='s_ipt']
    - css: input.s_ipt 或者 .s_ipt 在css里用.表示class

    属性:
    - xpath: //input[@name='wd']
    - css: input[name=wd]
    详细的在下面的网址
    https://www.runoob.com/cssref/css-selectors.html


    ## xpath vs css(面试题)
    - css 整体上来说比 xpath 表示是更简洁的
    - css 查找速度比 xpath 更快,
    - xpath 的功能比 css 更强
    - 对于复杂元素xpath返回会更简洁
    - css 目前不支持通过文本, xpath 可以
  • 相关阅读:
    amfphp1.9 class mapping初探
    C#程序打包.exe应用程序
    数据库备份方案
    ListView 控件使用
    在C#中运用SQLDMO备份和恢复Microsoft SQL Server数据库
    .NET
    转载:MATLAB 符号函数作图
    整理雷达相关
    Python 程序 运行过程
    struts2 文件上传显示进度条
  • 原文地址:https://www.cnblogs.com/wsfsd/p/15622991.html
Copyright © 2011-2022 走看看