• selenium--定位--CSS


    大家在使用selenium元素定位的时候,通常更多使用的是XPATHcss定位方式用得比较少

    但有时候css定位方式还是有一些优势的,

    优势1:一般情况下定位速度要比XPATH

    优势2:语法要比XPATH更简洁

     

    下面简要介绍一下css元素选择器的语法

    常见语法

    *

    通用元素选择器,匹配任何元素

    E

    标签选择器,匹配所有使用E标签的元素

    .info

    class选择器,匹配所有class属性中包含info的元素

    #footer

    id选择器,匹配所有id属性等于footer的元素

    E,F

    多元素选择器,同时匹配所有E元素或F元素,EF之间用逗号分隔

    E F

    后代元素选择器,匹配所有属于E元素后代的F元素,EF之间用空格分隔

    E > F

    子元素选择器,匹配所有E元素的子元素F

    E + F

    毗邻元素选择器,匹配紧随E元素之后的同级元素F (只匹配第一个)

    E ~ F

    同级元素选择器,匹配所有在E元素之后的同级F元素

    E[att='val']

    属性att的值为valE元素 (区分大小写)

    E[att^='val']

    属性att的值以val开头的E元素 (区分大小写)

    E[att$='val']

    属性att的值以val结尾的E元素 (区分大小写)

    E[att*='val']

    属性att的值包含valE元素 (区分大小写)

    E[att1='v1'][att2*='v2']

    属性att1的值为v1att2的值包含v2 (区分大小写)

    E:contains('xxxx')

    内容中包含xxxxE元素

    E:not(s)

    匹配不符合当前选择器的任何元素

     

    例如这样一段html代码的网页

    <div class="formdiv">

    <form name="fnfn">

    <input name="username" type="text"></input>

    <input name="password" type="text"></input>

    <input name="continue" type="button"></input>

    <input name="cancel" type="button"></input>

    <input value="SYS123456" name="vid" type="text">

    <input value="ks10cf6d6" name="cid" type="text">

    </form>

    <div class="subdiv">

    <ul id="recordlist">

    <p>Heading</p>

    <li>Cat</li>

    <li>Dog</li>

    <li>Car</li>

    <li>Goat</li>

    </ul>

    </div>

    </div>

    匹配示例:

    locator

    匹配

    css=div

    css=div.formdiv

    <div class="formdiv">

    css=#recordlist

    css=ul#recordlist

    <ul id="recordlist">

    css=div.subdiv p

    css=div.subdiv > ul > p

    <p>Heading</p>

    css=form + div

    <div class="subdiv">

    css=p + li

    css=p ~ li

    二者定位到的都是 <li>Cat</li>

    但是storeCssCount的时候,前者得到1,后者得到4

    css=form > input[name=username]

    <input name="username">

    css=input[name$=id][value^=SYS]

    <input value="SYS123456" name="vid" type="hidden">

    css=input:not([name$=id][value^=SYS])

    <input name="username" type="text"></input>

    css=li:contains('Goa')

    <li>Goat</li>

    css=li:not(contains('Goa'))

    <li>Cat</li>

  • 相关阅读:
    第53章:高级反调试技术
    第6章:加密算法
    第5章:演示版保护技术——光盘检测、只运行一个实例
    第5章:演示版保护技术——网络验证
    第5章:演示版保护技术——菜单功能限制、KeyFile保护
    第5章:演示版保护技术——时间限制
    第5章:演示版保护技术——警告窗口
    第5章:演示版保护技术——序列号保护方式
    第52章:动态反调试技术
    laravel 路由隐式绑定
  • 原文地址:https://www.cnblogs.com/i16i1007/p/6667329.html
Copyright © 2020-2023  润新知