zoukankan      html  css  js  c++  java
  • Selenium系列(十二)

    如果你还想从头学起Selenium,可以看看这个系列的文章哦!

    https://www.cnblogs.com/poloyy/category/1680176.html

    其次,如果你不懂前端基础知识,需要自己去补充哦,博主暂时没有总结(虽然我也会,所以我学selenium就不用复习前端了哈哈哈...)

    Web UI自动化中,定位方式的优先级

    • 优先级最高:ID
    • 优先级其次:name
    • 优先级再次:CSS selector
    • 优先级再次:Xpath

    针对css selector和xpath的优先级做一个简单的说明

    在项目中我们可能用的最多的是css或者xpath,那么针对这两种,我们优先选择css,原因在哪些?

    • 原因1:css是配合html来工作,它实现的原理是匹配对象的原理,而xpath是配合xml工作的,它实现的原理是遍历的原理,所以两者在设计上,css性能更优秀
    • 原因2:语言简洁,明了,相对xpath
    • 原因3:前端开发主要是使用css,不使用xpath,所以在技术上面,我们可以获得帮助的机会非常多

    定位元素的注意事项(划重点)

    • 找到待定位元素的唯一属性
    • 如果该元素没有唯一属性,则先找到能被唯一定位到的父元素/子元素/相邻元素,再使用 > , " " , + 等进行辅助定位
    • 不要使用随机唯一属性定位
    • 最重要的是多跟研发沟通,尽量把关键元素加上ID或者name,并减少不合理的页面元素,例如重复ID这样的事情最好不要发生

    首先,基础的CSS选择器

    选择器 名字 例子 例子描述
    基础选择器
    .class class选择器 .intro 选择 class="intro" 的所有元素。
    #id id选择器 #firstname 选择 id="firstname" 的所有元素。
    * 通配符   选择所有元素。
    element 标签选择器 p 选择所有 <p> 元素。
    多层选择器
    element,element 分组选择器 div,p 同时选择所有 <div> 元素和所有 <p> 元素。
    element element 后端选择器 div p 选择 <div> 元素内部的所有 <p> 元素(包括子元素、孙子元素)
    element>element 子元素选择器 div>p 选择 <div> 元素下的 <p> 子元素
    element+element 相邻选择器 div+p 选择 <div> 元素之后的所有兄弟 <p> 元素。
    属性选择器
    [attribute] [target]   选择带有 target 属性所有元素。
    [attribute=value] [target=_blank]   选择 target="_blank" 的所有元素。
    [attribute~=value] [title~=flower]   选择 title 属性包含单词 "flower" 的所有元素。
    [attribute|=value] [lang|=en]   选择 lang 属性值以 "en" 开头的所有元素。

    html页面中,css正确写法的栗子

    /* id选择器 */
    #abc {
        color: #cc0000;
        font-size: 12px;
    }
    
    /* class 选择器 */
    .down {
        color: #66cc66;
    }
    
    /* 标签选择器 */
    p {
        background: cornflowerblue;
    }
    
    /* 标签选择器可以与class选择器组合使用 */
    p.down {
        font-size: 24px;
    }
    
    /* 分组选择器 */
    ul,
    div,
    .up {
        color: #cc0000;
    }
    
    /* 属性选择器 */
    [href] {
        color: #cc6600;
    }
    
    span[title="hello"] {
        color: #00FFFF;
    }
    
    span[title~="python"] {
        font-size: 24px;
    }
    
    /* 后代选择器 */
    div li {
        background: forestgreen;
    }
    
    /* 子元素选择器 */
    div[id="up"]>ul {
        color: #cc6600;
    }
    
    /* 相邻兄弟选择器 */
    #down+li {
        font-size: 24px;
    }
    
    /* 后续兄弟选择器 */
    #down~li {
        color: #cc0000;
    }

    然后,伪类选择器

    选择器 例子  例子描述
    :first-child p:first-child 选择属于父元素的第一个子元素的每个 <p> 元素。
    :nth-child(n) p:nth-child(2) 选择属于其父元素的第二个子元素的每个 <p> 元素。
    :nth-last-child(n) p:nth-last-child(2) 同上,从最后一个子元素开始计数。
    :nth-of-type(n) p:nth-of-type(2) 选择属于其父元素第二个 <p> 元素的每个 <p> 元素。
    :nth-last-of-type(n) p:nth-last-of-type(2) 同上,但是从最后一个子元素开始计数。
    :last-child p:last-child 选择属于其父元素最后一个子元素每个 <p> 元素。
  • 相关阅读:
    ubuntu--基础环境瞎搞集合
    java _tomcat_mysql 部署
    简单Dp----最长公共子序列,DAG最长路,简单区间DP等
    大素数判断和素因子分解(miller-rabin,Pollard_rho算法)
    ssh 命令
    linux服务器上设置多主机头,设置多web站点
    getline()函数
    SGU[118] Digital Root
    SGU[117] Counting
    SGU[104] Little shop of flowers
  • 原文地址:https://www.cnblogs.com/poloyy/p/12629662.html
Copyright © 2011-2022 走看看