Python+Selenium+Unittest 之selenium7--元素定位6-CSS定位1(定位所有、定位class、定位id、tag定位)

目录

一、CSS简介

二、 定位方式

三、实践操作

1、*(定位所有元素)

 2、. (定位class属性)

 3、#(定位id属性)

4、tag定位


一、CSS简介

        CSS属于是一种计算机语言,主要是用来为结构化文档的外观来进行修饰的,比如说文档的颜色、字体之类的,一般情况下CSS的定位速度要快于XPath的。

二、 定位方式

        CSS和XPath的定位方式类似,可以通过CSS的一些语法,去匹配class、id等元素进行定位。

表达式含义

*

定位所有元素
.class选择器,定位class属性
#id选择器,定位id属性
tag_name定位元素时,不需要任何符号标识,直接使用标签名即可,定位tag_name
A元素>B元素定位绝对路径(相当于xpath的/)
A元素 B元素(中间用空格隔开)定位相对路径(相当于XPath的//)
tag:nth-child(n)定位第n个标签,且第n个标签必须为tag

tag:first-child

定位第1个标签,且第1个标签必须为tag
tag:last-child定位最后1个标签,且最后1个标签必须为tag

三、实践操作

1、*(定位所有元素)

  使用"*"号可以定位到页面的所有元素。

CSS中"*"的具体语法:

find_element_by_css_selector("*")

from selenium import webdriver #导入selenium模块的webdriver
driver = webdriver.Chrome()     #webdriver.Chrome()是启动谷歌浏览器然后定义成变量driver
driver.get("https://www.baidu.com")   #打开百度浏览器
test = driver.find_element_by_css_selector("*")    #定位页面的所有元素
print(test.text)     #输出定位到的所有text内容

 打印结果为:

新闻hao123地图贴吧视频图片网盘更多
设置登录
高考上百度,智能报志愿

换一换
禁绝毒品 常抓不懈
3“千万工程”一张蓝图绘到底
1胡锡进自称正式进入中国股市
热
4被家长持长杆追打 男孩从5楼跳下
2男孩估分700结果真考700分
热
5经纪人回应张雪峰被强制送医
热

 2、. (定位class属性)

        在css定位中,如果要匹配class的属性,就需要在class属性前加上"."去进行定位。

CSS中"."的具体语法:

find_element_by_css_selector(".class")

from selenium import webdriver #导入selenium模块的webdriver
driver = webdriver.Chrome()     #webdriver.Chrome()是启动谷歌浏览器然后定义成变量driver
driver.get("https://www.baidu.com")   #打开百度浏览器
driver.find_element_by_css_selector('.s_ipt').send_keys('放假安排')   #定位到输入框,然后输入框输入 放假安排
 3、#(定位id属性)

         和使用class定位方式一样,只不过就是把"."+class换成了"#"+id。

CSS中"#"的具体语法:

find_element_by_css_selector("#id")

from selenium import webdriver #导入selenium模块的webdriver
driver = webdriver.Chrome()     #webdriver.Chrome()是启动谷歌浏览器然后定义成变量driver
driver.get("https://www.baidu.com")   #打开百度浏览器
driver.find_element_by_css_selector('#kw').send_keys('放假安排')   #定位到输入框,然后输入框输入 放假安排
4、tag定位

        tag定位的方法是直接在()里输入要定位的tag标签即可,因为页面没有唯一的tag元素,所以这里就简单举个例子,可能运行不成功。

 CSS中tag定位的具体语法:

find_element_by_css_selector("tag标签")

from selenium import webdriver #导入selenium模块的webdriver
driver = webdriver.Chrome()     #webdriver.Chrome()是启动谷歌浏览器然后定义成变量driver
driver.get("https://www.baidu.com")   #打开百度浏览器
driver.find_element_by_css_selector('input').send_keys('放假安排')   #定位到输入框,然后输入框输入 放假安排

    这篇先说CSS的这四种定位方式,下一篇说剩下的几种定位方式。


 下图为公众号二维码,内容会同步发出,大家可以关注一起学习!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在使用 PythonSelenium 库进行元素定位时,可以创建一个类来管理定位相关的操作。下面是一个示例代码: ```python from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC class ElementLocator: def __init__(self, driver): self.driver = driver def find_element_by_id(self, element_id): return self.driver.find_element(By.ID, element_id) def find_element_by_xpath(self, xpath): return self.driver.find_element(By.XPATH, xpath) def wait_for_element_visible(self, locator, timeout=10): return WebDriverWait(self.driver, timeout).until(EC.visibility_of_element_located(locator)) # 可以添加其他常用的元素定位方法,比如 find_element_by_css_selector、find_element_by_class_name 等等 # 示例用法 driver = webdriver.Chrome() element_locator = ElementLocator(driver) element = element_locator.find_element_by_id("element_id") element.click() visible_element = element_locator.wait_for_element_visible((By.XPATH, "//div[@class='my-element']")) ``` 在上面的示例代码,我们创建了一个名为 `ElementLocator` 的类,它接收一个 Selenium WebDriver 对象作为参数,并提供了一些常用的元素定位方法,比如 `find_element_by_id` 和 `find_element_by_xpath`。此外,还添加了一个 `wait_for_element_visible` 方法,用于等待元素可见。 你可以根据自己的需要扩展 `ElementLocator` 类,添加其他常用的元素定位方法,以便于在测试或爬虫等场景使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘阿童木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值