selenium:css_selector定位详解(css selector和xpath的比较)

来源:https://www.cnblogs.com/haifeima/p/10138154.html

 

selenium使用css selector和xpath的比较

selenium提供的定位方式(常用)

  • ID
  • NAME
  • CLASS
  • CSS SELECTOR
  • XPATH
 

推荐的定位方式的优先级

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

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

在项目中我们可能用的最多的是css或者xpath,那么针对这两种,我们优先选择css,原因在哪些?
  • 原因1:css是配合html来工作,它实现的原理是匹配对象的原理,而xpath是配合xml工作的,它实现的原理是遍历的原理,所以两者在设计上,css性能更优秀
  • 原因2:语言简洁,明了,相对xpath
  • 原因3:前段开发主要是使用css,不使用xpath,所以在技术上面,我们可以获得帮助的机会非常多
题外话:据说xpath和css现在基本没有什么太大的区别了,css已经实现了大多数的xpath功能,只有个别功能没有实现。具体的数据列证还需要找更多的数据进行填充。
 
 

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

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

selenium之CSS定位汇总

以百度首页为例:

定位输入框

一:单一属性定位

1:type selector

driver.find_element_by_css_selector('input')

2:id 定位

driver.find_element_by_css_selector('#kw')

3:class 定位

driver.find_element_by_css_selector('.s_ipt')

4:其他属性定位

driver.find_element_by_css_selector('[name='wd']')

driver.find_element_by_css_selector("[type='text']")

二:组合属性定位

1:id组合属性定位

driver.find_element_by_css_selector("input#kw")

2:class组合属性定位

driver.find_element_by_css_selector("input.s_ipt")

3:其他属性组合定位

driver.find_element_by_css_selector("input[name='wd']")

4:仅有属性名,没有值也可以

driver.find_element_by_css_selector("input[name]")

5:两个其他属性组合定位

driver.find_element_by_css_selector("[name='wd'][autocomplete='off']")

6:模糊匹配属性值方法

以百度首页点击按钮为例

1>属性值由多个空格隔开,匹配其中一个值的方法

driver.find_element_by_css_selector("input[class~='btn']")

2>匹配属性值为字符串开头的方法

driver.find_element_by_css_selector("input[class^='btn']")

3>匹配属性值字符串结尾的方法

driver.find_element_by_css_selector("input[class$='s_btn']")

4>匹配被-分割的属性值的方法,如上图的class

driver.find_element_by_css_selector("input[class|='s']")  #要求精确填写的属性值

三:层级定位

1:E>F    E下面的F这个元素

driver.find_element_by_css_selector('from#form>span>input')#id是form的form下面的span下面的input

2:E:nth-child(n)  如上图,

driver.find_element_by_css_selector('#u_sp > a:nth-child(1)')#id为u_sp的下面的第一个a标签。

#实测,这个定位不到,但是方法是对的,- -

3:E:nth-last-child(n),如字面意思:倒数第几个标签

4:E:first-child,第一个标签

5:E:last-child,最后一个标签

6:E:only-child,唯一的标签

selenium:css_selector定位详解的更多相关文章

  1. xpath与css_selector定位详解

    例题:分别用xPath和css_selector定位下图的img标签 答案:  xpath:.//*[@id='fstscr']/div[3]/div[2]/a/img css_selector: . ...

  2. selenium:css_selector定位详解(css selector和xpath的比较)

    selenium使用css selector和xpath的比较 selenium提供的定位方式(常用) ID NAME CLASS CSS SELECTOR XPATH   推荐的定位方式的优先级 优 ...

  3. Python爬虫之selenium库使用详解

    Python爬虫之selenium库使用详解 本章内容如下: 什么是Selenium selenium基本使用 声明浏览器对象 访问页面 查找元素 多个元素查找 元素交互操作 交互动作 执行JavaS ...

  4. 小甲鱼PE详解之基址重定位详解(PE详解10)

    今天有一个朋友发短消息问我说“老师,为什么PE的格式要讲的这么这么细,这可不是一般的系哦”.其实之所以将PE结构放在解密系列继基础篇之后讲并且尽可能细致的讲,不是因为小甲鱼没事找事做,主要原因是因为P ...

  5. 带你走进CSS定位详解

    学习CSS相关知识,定位是其中的重点,也是难点之一,如果不了解css定位有时候都不知道怎么用,下面整理了一下关于定位属性的具体理解和应用方案. 一:定位 定位属性列表 position top bot ...

  6. iOS 后台持续定位详解(支持ISO9.0以上)

    iOS 后台持续定位详解(支持ISO9.0以上) #import <CoreLocation/CoreLocation.h>并实现CLLocationManagerDelegate 代理, ...

  7. 多测师讲解自动化测试 _RF课堂_定位详解(002上午)_高级讲师肖sir

    1,打开克览器 2.id定位 Input Text id=kw 我是id定位 #id定位方法 3.name定位 Input Text name=wd 我是name定位方法 #我是name定位方法 4. ...

  8. CSS进阶内容—浮动和定位详解

    CSS进阶内容-浮动和定位详解 我们在学习了CSS的基本知识和盒子之后,就该了解一下网页的整体构成了 当然如果没有学习之前的知识,可以到我的主页中查看之前的文章:秋落雨微凉 - 博客园 CSS的三种布 ...

  9. selenium:Xpath定位详解

    xpath定位在业界被戏称为元素定位的"屠龙宝刀",宝刀在手,武林我有.现在我们就来详解xpath定位方法. 一.xpath通过元素属性定位 xpath可以通过元素的属性来定位,如 ...

随机推荐

  1. 【JZOJ5434】【NOIP2017提高A组集训10.30】Matrix

    题目 分析 假设答案为ans, 发现\[k=\sum_{i=1}^{min(n,k)}\lfloor \dfrac{ans}{i} \rfloor\] 于是可以对ans进行二分, 用分块来求出上面的式 ...

  2. C# 计时函数(毫秒)

    using System; using System.Diagnostics; using System.Runtime.InteropServices; using System.Threading ...

  3. wx小程序知识点(一)

    一.微信小程序中的目录及文件 (1)project.config.json 用于开发者工具配置 主要用于设置项目是否开启https校验(setting.urlCheck) (2) App.js 设置全 ...

  4. 定时任务spring task

    1)spring boot 几种定时任务的实现方式:https://www.jianshu.com/p/b6809b5a0c26 2)spring-boot 定时任务之Scheduled Task:h ...

  5. 计算机网络(十一),HTTP和HTTPS区别

    目录 1.SSL(Security Sockets Layer,安全套接层) 2.加密方式 3.HTTPS数据传输流程 4.HTTP和HTTPS的区别 5.HTTP真的很安全吗 十一.HTTP和HTT ...

  6. SpringBoot项目中,异常拦截

    SpringBoot自带异常拦截@ControllerAdvice 1.创建一个SellerExceptionHandler类打上@ControllerAdvice标签 @ControllerAdvi ...

  7. Cqoi2017试题泛做

    Day1 4813: [Cqoi2017]小Q的棋盘 树形背包DP. #include <cstdio> #define maxn 110 #define R register #defi ...

  8. 【BZOJ3545&BZOJ3551】Peaks(kruskal重构树,主席树,dfs序)

    题意:在Bytemountains有N座山峰,每座山峰有他的高度h_i. 有些山峰之间有双向道路相连,共M条路径,每条路径有一个困难值,这个值越大表示越难走, 现在有Q组询问,每组询问询问从点v开始只 ...

  9. Python3 获取一大段文本之间两个关键字之间的内容

    用re或者string.find.以下是re代码 123456789101112131415import re#文本所在TXT文件file = '123.txt' #关键字1,2(修改引号间的内容)w ...

  10. 3分割线左右间距(LinearLayoutManager.VERTICAL)

    <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=" ...