大部分人在使用selenium定位元素时,用的是xpath定位,因为xpath基本能解决定位的需求。css定位往往被忽略掉了,其实css定位也有它的价值,css定位更快,语法更简洁。

一:css:属性定位

1、css可以通过元素的id、class、标签这三个常规属性直接定位,如下:

①. css用#号表示id属性,如:

id=“kw” 可以写成:#kw

②. css用.表示class属性,如:

class="s_ipt"可以写成:.s_ipt

③. css直接用标签名称,无任何标识符,如:input

二:css:其他属性

1、css除了上述以外,也可以通过其他属性定位,如下:

①. css通过name属性定位:

driver.find_element(By.CSS_SELECTOR,"[name='wd']")

②. css通过autocomplete属性定位:

driver.find_element(By. CSS_SELECTOR,"[autocomplete='off']")

③.css通过type属性定位:

driver.find_element(By.CSS_SELECTOR,"[type='text']")

三:css:标签

1、css页可以通过标签与属性的组合来定位元素,如下:

①. css通过标签与class属性的组合定位driver.find_element(By.CSS_SELECTOR,"input.s_ipt")

②. css通过标签与id属性的组合定位driver.find_element(By.CSS_SELECTOR,"input#kw")

③. css通过标签与其他属性组合定位driver.find_element(By.CSS_SELECTOR,"input[id='kw']")

四:css:层级关系

1、如://form[@id=‘form’]/span/input和//form[@class=‘fm’]/span/input

①. css通过层级关系定位driver.find_element(By.CSS_SELECTOR,"form#form>span>input")

②. css通过层级关系定位driver.find_element(By.CSS_SELECTOR,"form.fm>span>input")

五:css:索引

1、css也可以通过索引option:nth-child(1)来定位子元素,如下:

①. 选择第一个子元素driver.find_element(By.CSS_SELECTOR,"select#nr>option:nth-child(1)")

②. 选择第二个子元素driver.find_element(By.CSS_SELECTOR,"select#nr>option:nth-child(2)")

③. 选择第三个子元素driver.find_element(By.CSS_SELECTOR,"select#nr>option:nth-child(3)")

六:css:逻辑运算

1、css同时匹配两个属性,不需要and关键字driver.find_element(By.CSS_SELECTOR,"input[id='kw'][name='wd']")

七:css:模糊匹配driver.find_element(By.CSS_SELECTOR,"input:contains('kw')")

一、xpath:属性定位

1、xpath也可以通过元素的id、name、class这些属性定位,如下:

①. 用xpath通过id属性定位

driver.find_element(By.XPATH,"//[@id='kw']")

②. 用xpath通过name属性定位

driver.find_element(By.XPATH,"//[@name='wd']")

③. 用xpath通过class属性定位

driver.find_element(By.XPATH,"//*[@class='s_ipt']")

二、xpath:其他属性

1、没有上述属性,可以通过其他属性定位,如下:

driver.find_element(By.XPATH,"//*[@autocomplete='off']")

三、xpath:标签

1、如果同一个属性,同名的比较多,可以通过标签筛选下

2、如果不想制定标签名称,可以用号表示任意标签

3、如果想制定具体某个标签,就可以直接写标签名称

①. 用xpath通过其他属性定位driver.find_element(By.XPATH,"//input[@autocomplete='off']")

②. 用xpath通过id属性定位driver.find_element(By.XPATH,"//input[@id='kw']")

③. 用xpath通过name属性定位driver.find_element(By.XPATH,"//name[@id='wd']")

四、xpath:层级

1、如果一个元素,他的属性不明显,无法直接定位,可以先找到他的父元素

2、找到父元素,再找下一级就能定位

①. 通过定位父元素来定位input输入框driver.find_element(By.XPATH,"//span[@id='s_kw_wrap']/input")

②. 通过定位爷元素来定位input输入框driver.find_element(By.XPATH,"//form[@id='form']/span/input")

五、xpath:索引

1、如果一个元素和他同级的标签一样,无法通过层级定位

2、可以通过排序定位

①. 用xpath定位第一位driver.find_element(By.XPATH,"//select[@id='nr']/option[1]")

②. 用xpath定位第二位driver.find_element(By.XPATH,"//select[@id='nr']/option[2]")

③. 用xpath定位第三位driver.find_element(By.XPATH,"//select[@id='nr']/option[3]")

六、xpath:逻辑运算

1、xpath还有一个比较强的功能,是可以多个属性逻辑运算的,可以支持and、or、not

2、一般用的比较多的是and运算,同时满足两个属性driver.find_element(By.XPATH,"//select[@id='nr' and @autocomplete='off']")

七、xpath:模糊匹配

1、xpath强大的模糊匹配

2、掌握了模糊匹配功能,基本上没有定位不到的

3、by_partial_link,模糊匹配定位

driver.find_element(By.XPATH,"//*[contains(text(),'hao123')]")

css定位和xpath定位,selenium的css定位与xpath定位相关推荐

  1. autoware定位:gnss定位与lidar定位(四)

    autoware定位:gnss定位与lidar定位(四) 介绍如何在autoware中使用GNSS进行定位 启动autoware $ cd ~/autoware.ai $ source install ...

  2. 【高精度定位】RTK定位与RTD定位知识科普

    高精度定位一般指亚米级别或厘米级别的定位,常见的室内有蓝牙AoA和UWB两种技术,室外有北斗地基增强技术,这些技术都是采用算法进行定位. 工业4.0时代,在资源和环境约束不断强化的背景下,创新驱动传统 ...

  3. 蓝牙定位与UWB定位的对比

    室内定位技术有好多种,有发展多年的超声波.蓝牙(iBeacon).红外.超宽带UWB以及最近兴起的蓝牙5.1 AOA等等.UWB在国内发展也有十多年了,其应用似乎很广,市场也比较大,UWB在苹果最新手 ...

  4. python元素定位id和name_Python+Selenium自动化软件测试实战:Xpath,class,id,name定位和Iframe框架跳转...

    web自动化的前提:环境要求:python和pycharm 2.安装好环境需要后还需要cmd 输入pip install selenium 引入selenium web自动化测试库 3.google浏 ...

  5. 简单理解sticky定位与fixed定位的区别

    fixed:固定定位,相对于可视窗口定位,一但使用top,left绑定后,无论怎么滚动可视窗口区域(也就是滑动滚动条),它的位置都不会发生变化 sticky:粘性定位,相当于是相对定位和固定定位的结合 ...

  6. python爬虫和定位_Python网络爬虫实战,照片定位与B站弹幕!

    之前两篇已经说完了如何爬取网页以及如何解析其中的数据,那么今天我们就可以开始第一次实战了. Python资源共享群:626017123 这篇实战包含两个内容. * 利用爬虫调用Api来解析照片的拍摄位 ...

  7. python爬虫和定位_Python网络爬虫实战(三)照片定位与B站弹幕

    之前两篇已经说完了如何爬取网页以及如何解析其中的数据,那么今天我们就可以开始第一次实战了. 这篇实战包含两个内容. * 利用爬虫调用Api来解析照片的拍摄位置 * 利用爬虫爬取Bilibili视频中的 ...

  8. RTD定位与RTK定位科普介绍

    高精度定位,通常指的是亚米级.厘米级.毫米级的定位精度,在测绘.无人机.精准控制领域广泛应用, RTD(Real Time Differential),实时动态码相位差分技术.实时动态测量中,把实时动 ...

  9. 北斗定位与GPS定位的区别

    欢迎来到东用小知识课堂,每天学习一分钟,让你紧跟时代,扩充自己,成为大佬不是梦!   1.覆盖范围:北斗定位系统是覆盖中国本土的区域导航系统.覆盖范围东经约70°一140°,北纬5°一55°.GPS是 ...

最新文章

  1. python 脚本撞库国内“某榴”账号
  2. extjs 4 tab panel得strip在IE下右偏解决办法
  3. 关于nginx信号控制的“故障”案例
  4. 学点 C 语言(35): 函数 - 递归
  5. nyoj99(欧拉路)
  6. java多线程启动BIO和NIO服务端同时启动接受图片和字符数据
  7. 揭秘python的5种最佳调试方法_揭秘 IPython 的 5 种最佳调试方法-阿里云开发者社区...
  8. centos7安装flink集群_《从0到1学习Flink》—— Flink 写入数据到 Kafka
  9. 【HDU - 6016】Count the Sheep (思维,类似二分图)
  10. Promise源码实现
  11. 配置项setOption -- title
  12. sitemesh 2.4 装饰器学习
  13. Jupyter Notebook界面也可以如此炫酷?有人把Notebook玩出了新花样
  14. excel出入库采购库存管理系统
  15. 315|大数据杀熟,如何才不被坑?
  16. 图片秒加水印制作生成威信小程序源码下载
  17. B站哔哩哔哩视频一键下载,这个视频下载工具太给力了
  18. SQL读取Excel数据
  19. 【OpenVINO 3】POT量化流程
  20. python从键盘输入一个数、判断其是奇数还是偶数_从键盘上任意输入一个正数,判断是奇数还是偶数...

热门文章

  1. 【干货】做外贸开发客户用的什么群发软件发?
  2. python imshow参数_skimageimsave函数、imshow函数的说明
  3. 如何用cmd打开python的.ipynb文件(打开,并不是转为.py文件)
  4. 一套Oracle集群RMAN备份的实现
  5. linux vim使用 详解,vim使用详解
  6. Docker入门指南:基于 docker 搭建机器学习/深度学习开发环境
  7. go语言学习之二维数组
  8. AI 能看懂漫画吗?它的脑补能力比人类差远了
  9. 金蝶K3WISE15.1最新部署步骤
  10. IPHONE游戏开发 第二章 游戏引擎剖析