【03】Selenium+Python 八种定位元素方法

操作元素,需要先查找定位到对应的元素。

查找单个元素:driver.find_element() 返回是一个web element 对象

查找多个元素:driver.find_elements() 返回是一个list对象

By 是 Selenium 中一个非常重要的类,用于定位网页元素。

使用需要导入By模块

python 复制代码
from selenium.webdriver.common.by import By  # 导入 By 模块

常用方法及示例

1. By.ID

根据元素的 ID 定位。

ID一般不会重复。

python 复制代码
element = driver.find_element(By.ID, "kw")

2.By.NAME

根据元素的 名称 定位。

python 复制代码
element = driver.find_element(By.NAME, "wd")

3.By.CLASS_NAME

根据元素的 类名 定位。

python 复制代码
element = driver.find_element(By.CLASS_NAME, "s_ipt")

4.By.TAG_NAME

根据元素的 标签名 定位。

一般与driver.find_elements()方法一起使用,因为一个页面中tag name非常容易重复。

python 复制代码
element = driver.find_elements(By.TAG_NAME,'input')
print(type(element))

find_elements 返回的是list 可以通过遍历list的方法获取每个元素

5.By.LINK_TEXT

根据元素的 链接文本 定位。

python 复制代码
element = driver.find_element(By.LINK_TEXT, "新闻")

6.By.PARTIAL_LINK_TEXT

根据元素的 部分链接文本 定位。

同样还是上面那个新闻链接。这样也能找到。

python 复制代码
element = driver.find_element(By.PARTIAL_LINK_TEXT, "新")

7.By.XPATH

根据元素的 XPath 定位。

在对应元素上,右键,copy,可复制xpath路径。

python 复制代码
    #复制的相对路径
    element = driver.find_element(By.XPATH, "//*[@id='kw']")
    #复制的绝对路径 很长不推荐使用
    element = driver.find_element(By.XPATH, "/html/body/div/div[2]/div[5]/div[1]/div/form/span[1]/input")
    #自己手写路径匹配规则
    element = driver.find_element(By.XPATH, "//input[@id='kw' and @name='wd' ]")

8.By.CSS_SELECTOR

根据元素的 CSS选择器 定位。

这个同样也可以在对应元素上,右键,copy,复制CSS选择器。

python 复制代码
# 复制的selector
driver.find_element(By.CSS_SELECTOR,"#kw")
#自己手写
element = driver.find_element(By.CSS_SELECTOR, "input[name='wd']")
相关推荐
张赐荣3 分钟前
跨平台无障碍版随机数生成器
windows
程序媛徐师姐9 分钟前
Python基于深度学习的手写输入识别系统【附源码、文档说明】
python·深度学习·python深度学习·手写输入识别系统·python手写输入识别系统·python手写输入识别·深度学习手写输入识别
胖少年15 分钟前
从零开始:在 Windows 上用 llama.cpp 跑本地大模型
windows·llama
2301_7641505616 分钟前
c++如何读取和解析带BOM头的UTF-8与UTF-16文本流【详解】
jvm·数据库·python
qq_4240985619 分钟前
HTML函数开发用窄边框笔记本有优势吗_便携与性能权衡【指南】
jvm·数据库·python
小狄同学呀22 分钟前
同样的global,不同的audioLibPath——记一次诡异的内存错位
c++·windows
Wyz2012102422 分钟前
CSS如何实现导航栏下划线随鼠标移动_利用-hover伪类与过渡动画控制
jvm·数据库·python
2201_7610405923 分钟前
SQL如何统计每个用户的首次行为时间_MIN聚合与分组
jvm·数据库·python
qq_1898070329 分钟前
mysql如何实现定时清理缓存数据_利用event scheduler执行
jvm·数据库·python
Polar__Star31 分钟前
golang如何实现低功耗设备唤醒机制_golang低功耗设备唤醒机制实现教程
jvm·数据库·python