zoukankan      html  css  js  c++  java
  • 元素定位之CssSelector

    一:使用chrome console检查css selector/xpath的有效性【检查】
    
    步骤 
    1. 按F12打开chrome的开发者工具; 
    2. 再按Esc键调出console,chrome的Elements和Console展示在同一个窗口,便于查看。
     3、在Console控制太重输入 $(selector)和$$(selector)
     
    CSS定位大全:
     
    CssSelector常用定位
    
    一、通过id定位
    (1)#kw    定位id=kw的元素
    (2)input#kw    定位id=kw的input标签元素
    python:driver.find_element_by_css_selector("input#kw")
    java:driver.findElement(By.cssSelector("input#kw"))   
    robotframework:css=input#kw
    为什么我要一一举例,就是想说明下,selenium对于支持不同语言,方法组成写法会有一些不同,但是定位路径都是一致的。
    
    二、通过classname定位
    说classname定位前,又要操心的说一下啦,在学习css的时候,应该都知道有两种选择器,一种是id选择器,一种是class类选择器,而id用#表示,类选择器用.(点)表示,所以别问我上面id定位的#是什么意思啊。知识点会比较多,所以基础还是比较重要的。
    (1).s_ipt    定位class=s_ipt的元素
    (2class=bg s_ipt_wr quickdelete-wrap,类似这种叫复合class,由多个类选择器组成,定位的写法则是:.bg.s_ipt_wr.quickdelete-wrap,所有空格用.(点)代替
    
    三、元素属性定位
    (1)input[id=kw]
    (2)input[class=s_ipt]
    (3)input[id=kw][class=s_ipt]
    还支持模糊匹配的,主要是太长的属性值方便使用;以class=bg s_ipt_wr quickdelete-wrap举例:
    (1)span[class ^=bg]    匹配所有span标签class属性值bg开头的元素
    (2)span[class $=rap]    匹配所有span标签class属性值rap结尾的元素
    (3)span[class *=quick]    匹配所有span标签class属性值中间有quick的元素
    
    四、元素层级定位
    1、子元素定位(>大于号)
    (1)span>input    定位span标签下的input标签
    (2)form>span>input    定位form标签下span标签下的input标签
    以大于号>为分层,查找元素定位必须一层一层的以>往下写,有多个则匹配多个
    2、后代元素(空格)
    (1)span input   定位span下所有的input标签,包括span下的所有层次的input,注意不是span下一层的input,是所有
    3、元素层级css还支持三个方法,分别是first-child、last-child、nth-child(n)
    (1)first-child:第一个后代元素
    (2)last-child:最后一个后代元素
    (3)nth-child(N):指定第N个后代元素
    下面举例:
    (1)input:first-child   定位所有层次第一个为input的元素,注意是第一个元素为input标签的
    (2)span input:first-child    定位span标签下,第一个为input标签的元素
    (3)span :last-child   定位span标签下,最后一个元素
    (4)span input:last-child    定位span标签下,最后一个为input标签的元素
    (5)span :nth-child(2)  定位span标签下,第二个元素
    (6)form.fm>:nth-child(2)  定位form标签,class等于fm下的第二个元素
    其中 :nth-child(n)是在匹配元素的父元素中选择第n个元素,n自1开始,然后判断是否符合选择器条件,而 :eq(n)是在匹配的元素中取下标为n的元素,n自0开始。



    我们首先使用如下语句进行选择:

    <p>paragraph 1</p>
    <ul>
    <li>CSS1</li>
    <li>CSS2</li>
    <li>CSS3</li>
    <li>CSS4</li>
    </ul>
    <ul>
    <li>jQuery1</li>
    <li>jQuery2</li>
    <li>jQuery3</li>
    <li>jQuery4</li>
    </ul>
    
    

    $("ul:eq(1)").css("background-color", "yellow");

    这条语句的作用是选择文档中 第二个ul 元素部分的内容(时刻记住位置过滤器是jQuery特有的所以其起始位索引为0),你会发现li中内容为jQuery部分的背景色变成了黄色,若我们使用如下的语句进行重新选择:

    $("ul:nth-child(2)").css("background-color", "yellow");

    这条语句的意思是选择文档中ul元素排在所有元素第二位的那部分元素,所以背景色变成黄色的部分换成了内容为CSS的那部分li元素,因为此时p元素是第一个元素,忽略比较时的元素类型,自然是内容为CSS的ul被选中了。

    总结:相对于xpath,css定位会相对来说更复杂,特别是层级的定位,但是其实搞懂两点,以大于号>层次的是一层一层下的,而空格则是后代元素,也就是所有的层。当然css定位组合也是很灵活,具有很多可变性,非常实用。

    
    
  • 相关阅读:
    Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS之验证码
    ABP前端使用阿里云angular2 UI框架NG-ZORRO分享
    ASP.NET Core之跨平台的实时性能监控(2.健康检查)
    应用程序的8个关键性能指标以及测量方法
    ASP.NET Core之跨平台的实时性能监控
    浅析Entity Framework Core2.0的日志记录与动态查询条件
    开发短网址平台的思路
    Nginx解决错误413 Request Entity Too Large
    配置Nginx实现负载均衡
    Windows下Nginx的安装及使用方法入门
  • 原文地址:https://www.cnblogs.com/wldan/p/10397826.html
Copyright © 2011-2022 走看看