写点什么

软件测试 / 测试开发|Python selenium CSS 定位方法详解

  • 2023-12-21
    北京
  • 本文字数:1427 字

    阅读完需:约 5 分钟

简介

CSS 选择器是一种用于选择 HTML 元素的模式。它允许我们根据元素的标签名、类名、ID、属性等属性进行选择。CSS 选择器的语法简单而灵活,是前端开发中常用的定位元素的方式。


selenium 中的 css 定位,实际是通过 css 选择器来定位到具体元素,css 选择器来自于css语法。CSS 定位有以下显著优点:


  1. 语法简洁

  2. 对比其他定位方式,定位效率更快

  3. 对比其他定位方式,定位更稳定

css 选择器语法

基础选择器



备注:某些元素属性有多个值(如 class 属性),值表现为以空格隔开,使用时需要单个取出使用


组合选择器


组合选择器就是同时使用多个基础选择器,从而更好地筛选出目标元素



伪属性选择器


伪属性选择器是指元素在 html 中实际并不存在该属性,是由 css 定义的拓展描述属性


使用示例

  1. 通过id选择器查找


通过 css 定位的id属性查找百度首页的输入框元素,代码如下:


from selenium import webdriverfrom selenium.webdriver.common.by import By

driver = webdriver.Chrome()driver.get("https://www.baidu.com") #打开网页driver.maximize_window() element = driver.find_element(By.CSS_SELECTOR, '#kw')print(element)
复制代码


  1. 通过class选择器查找


通过元素的.class属性值查找元素,我们还是以百度首页的输入框为例,代码如下:


from selenium import webdriverfrom selenium.webdriver.common.by import By

driver = webdriver.Chrome()driver.get("https://www.baidu.com") #打开网页driver.maximize_window() element = driver.find_element(By.CSS_SELECTOR, '.s_ipt')print(element)
复制代码


  1. 通过标签定位


我们继续使用百度首页输入框为例,输入框一般有input标签,代码如下:


from selenium import webdriverfrom selenium.webdriver.common.by import By

driver = webdriver.Chrome()driver.get("https://www.baidu.com") #打开网页driver.maximize_window() element = driver.find_element(By.CSS_SELECTOR, 'input')print(element)
复制代码


  1. 层级选择器


根据元素的父子关系来选择,实例:直接子元素层级关系,使用>号,继续以百度首页的搜索框为例,代码如下:


from selenium import webdriverfrom selenium.webdriver.common.by import By

driver = webdriver.Chrome()driver.get("https://www.baidu.com") #打开网页driver.maximize_window() element = driver.find_element(By.CSS_SELECTOR, '.bg.s_ipt_wr > input')print(element)
复制代码


注:如果两个元素之间不是直接的子元素关系,我们需要使用空格隔开,当有多级的层级关系时,我们可以使用 duoge>符号,示例如下:


from selenium import webdriverfrom selenium.webdriver.common.by import By

driver = webdriver.Chrome()driver.get("https://www.baidu.com") #打开网页driver.maximize_window() element = driver.find_element(By.CSS_SELECTOR, 'form input')print(element)
------------------------------------
from selenium import webdriverfrom selenium.webdriver.common.by import By

driver = webdriver.Chrome()driver.get("https://www.baidu.com") #打开网页driver.maximize_window() element = driver.find_element(By.CSS_SELECTOR, 'form > span > input')print(element)
复制代码

总结

CSS 定位是非常高效的一种定位方式,代码也非常简洁,相对于 xpath 定位方法来说,它的定位速度快,在能够使用 CSS 定位的情况下,推荐使用 CSS 定位来实现元素的定位。希望本文能够帮到大家!


获取更多技术资料,请点击!



用户头像

社区:ceshiren.com 微信:ceshiren2021 2019-10-23 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料,实时更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬。

评论

发布
暂无评论
软件测试/测试开发|Python selenium CSS定位方法详解_霍格沃兹测试开发学社_InfoQ写作社区