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

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定位汇总

以百度首页为例:

java xpath selector_selenium:css_selector定位详解(css selector和xpath的比较)_第1张图片

定位输入框

一:单一属性定位

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:模糊匹配属性值方法

以百度首页点击按钮为例

java xpath selector_selenium:css_selector定位详解(css selector和xpath的比较)_第2张图片

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']")

8430228ed636870868611578970e15cd.png

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

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

三:层级定位

java xpath selector_selenium:css_selector定位详解(css selector和xpath的比较)_第3张图片

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

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

java xpath selector_selenium:css_selector定位详解(css selector和xpath的比较)_第4张图片

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定位详解

selenium:css_selector定位详解(css selector和xpath的比较) 来源:https://www.cnblogs.com/haifeima/p/10138154.html ...

xpath与css_selector定位详解

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

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

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

带你走进CSS定位详解

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

Python爬虫之selenium库使用详解

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

详解CSS的相对定位和绝对定位(讲得很详细)

详解CSS的相对定位和绝对定位 CSS的相对定位和绝对定位通常情况下,我们元素的position属性的值默认为static 就是没有定位,元素出现在正常的文档流中,,这个时候你给这个元素设置的left ...

详解CSS盒模型(转)

你可能感兴趣的:(java,xpath,selector)