首页 > 其他分享 >selenium使用css selector和xpath的比较

selenium使用css selector和xpath的比较

时间:2023-04-01 21:14:48浏览次数:40  
标签:xpath driver selenium element input selector find css

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

推荐的定位方式的优先级

    优先级最高: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>属性值由多个空格隔开,匹配其中一个值的方法

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

 

定位输入框

 

一:单一属性定位

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,唯一的标签

 转载:https://blog.csdn.net/u014401637/article/details/121123399

标签:xpath,driver,selenium,element,input,selector,find,css
From: https://www.cnblogs.com/l1pe1/p/17279340.html

相关文章

  • selenium之关闭窗口,指定窗口大小,前进,后退,刷新等操作
    关闭窗口1、仅关闭当前窗口(Tab页),其他窗口不退出关闭用户当前正在使用的Web浏览器窗口,即WebDriver当前正在访问的窗口。.close()方法既不需要任何参数,也无任何返回值。driver.close()相当于浏览器中每个Tab页中的叉叉。2、关闭所有的浏览器窗口(WebDriver初始化的整个浏览器进程)同于......
  • python selenium 判断元素是否存在,实现:找到元素,执行对应的代码;找不到元素,继续执行其他
    selenium因为找不到元素会抛出异常,导致执行结束可以考虑使用driver.find_elements(),找不到元素时就会返回空列表,使用if-else语句,判断列表是否为空,非空,则正常找到元素,进行后续代码执行;空,则直接跳过,执行其他代码iflen(driver.find_elements())!=0#判断列表的长度是否为0......
  • scrapy爬虫框架(二)scrapy中Selector的使用
      在scrapy框架前,相信大家或多或少的已经了解了一些网页数据解析方法,如:xpath、bs4、正则表达式等,但是在scrapy框架中也有一个内置的数据提取方法--Selector。在这里我们就先简单介绍一下Selector在scrapy中的运用及常用方法。  为了方便示例,我们以官方文档中的示例页面源码进......
  • 教育-selenium
    1.SeleniumSelenium是一个综合性项目,支持多种编程语言三大组件:IDE:浏览器插件,录制用例WebDriver:自动化用例执行(Python、Java、Ruby、C#)Grid:从单机变为分布式......
  • selenium指定谷歌浏览器地址和驱动地址
    在scrapy中引入seleniumutils.pyfromseleniumimportwebdriver#创建谷歌浏览器对象,用selenium控制浏览器访问urldefcreate_chrome_driver(*,headless=False):......
  • Selenium鼠标事件
    前言:执行自动化测试过程中遇到鼠标的操作,例如:左键单击、左键双击、右键单击、鼠标悬停、鼠标拖动等等操作,如何模拟鼠标的操作?1、导入ActionChains包想使用selenium中的鼠......
  • selenium的作用域及解决登录验证问题
    一、selenium的作用域切换selenium在处理元素时遇见新窗口、网页嵌套网页、网页的原生弹窗,无法进行直接处理作用域里元素的内容,需要通过切换作用域来处理此类问题。selen......
  • python+selenium实现在某瓣上自动批量获取中文电影的英文名称
    一、需求背景知道一些电影的中文名称,但是想在国外网站上,查一下这些中文电影的评分。因此就必须知道这些中文电影的英文名称是什么,由此诞生次脚本 二、实现思路通过sele......
  • selenium 方法集
    元素定位方法描述By.ID根据id值获取对应的节点By.NAME根据name值获取对应的单个或多个节点By.TAG_NAME根据节点名获取节点By.CLASS_NAME根据class值......
  • 图片选择器:ImageSelector
    简介:Android自定义相册,实现了拍照、图片选择(单选/多选)、ImageLoader无绑定任由开发者选择。GitHub网址:https://github.com/YancyYe/GalleryPick优点:UI重改所有功能可......