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

    xpath定位和css定位对比

            实际项目中使用较多的是xpath定位和css定位。XPath是XML文档中查找结点的语法,换句话就是通过元素的路径来查找这个元素。xpath比较强大,而css选择器在性能上更优,运行速度更快,语法上更简洁。比较两种方法:

    直接子元素

    XPATH中的直接子元素是使用“/”定义的,而在CSS上,它是使用“>”定义的。

    XPATH://div/inputCSS: div>input

    后代元素

    如果一个元素在另一个元素的内部(子元素或者孙元素),则它在XPATH中使用“//”定义,而在CSS中仅使用空格定义。

    XPATH://div//inputCSS: div input

    ID定位

    XPATH中的元素id使用以下内容定义:"[@id='kw']",而在CSS中使用:"#kw"。

    XPATH://input[@id='kw']CSS: input#kw

    CLASS定位

    对于class属性,XPATH类似id,而CSS中用一个点表示。

    XPATH://input[@class='kw']CSS: input.kw

    弟弟元素

    这对于表单元素非常有用,即页面中位于同一父节点内的下一个相邻元素。

    XPATH://a[@name='tj_trhao123']/following-sibling::aCSS:a[name='tj_trhao123']+a

     

    哥哥元素

    页面中位于同一父节点内的上一个相邻元素。

    XPATH://a[@name='tj_trhao123']/preceding-sibling::aCSS:无法实现

    父节点元素

    页面中位于一个节点的上级元素。

    XPATH: //input/parentCSS: 无法实现

    属性值

    我们可以根据任何属性值定位元素。

    XPATH: //input[@name='username']CSS: input[name='username']

    多个属性值

    我们甚至可以通过多个属性来定位元素。

    XPATH: //input[@name='login'and @type='submit']CSS: input[name='login'][type='submit'] 

    第一个子元素

    XPATH: //div[@id='u1']/a[1]CSS: div#u1 a:first-child

    最后一个子元素

    XPATH: //div[@id='u1']/a[last()]CSS: div#u1 a:last-child

    第二个子元素

    XPATH: //div[@id='u1']/a[2]CSS: div#u1 a:nth-child(2)

    模糊匹配

    selenium中允许使用^=,$=或*=进行部分字符串匹配。

    ^=匹配前缀

    XPATH: input[starts-with(@id,'user')]CSS: input[id^='user']

     

    $=匹配后缀

    XPATH: input[ends-with(@id,'name')]CSS: input[id$='name']

     

    *=匹配包含

    XPATH: input[contains(@id,'sernam')]CSS: input[id*=sernam]

    总之,以上两种方法至少需要熟练其中一种。

     
     

    原创:https://mp.weixin.qq.com/s?src=11&timestamp=1561368664&ver=1688&signature=UnKlqCAnk0ZLSxgEKm7wqBpYK6b83hsYNeIpvWSEjCkki5COooor3Lpv5ddEoufc4Utcz8a-gYakP-NOHuc8E29YYzpSsNU4saiwz1nzOjX-zmjxJNziNKT7hFaQddWI&new=1

  • 相关阅读:
    【Git】windows上git命令中文乱码的问题
    【spring boot】集成了druid后,同样的mybatis模糊查询语句出错Caused by: com.alibaba.druid.sql.parser.ParserException: syntax error, error in :'name LIKE '%' ? '%'
    【log4j】springboot项目启动 ,使用的druid数据源,log4j报错 log4j:WARN Please initialize the log4j system properly.
    ScheduledExecutorService run方法要加入try catch
    基于t-io的MI工具实现
    Java 8:不要再用循环了 Stream替代for循环
    java gzip压缩与解压
    Java将字符串写入文件与将文件内容读取到字符串
    Des加解密
    spring boot 利用redisson实现redis的分布式锁
  • 原文地址:https://www.cnblogs.com/jingdenghuakai/p/11078401.html
Copyright © 2011-2022 走看看