Python+Selenium-2-定位元素(八种定位方式)

本文详细介绍了使用Python的Selenium库进行网页元素定位的八种方法,包括id、name、xpath、class name、link text、partial link text、css selector和tag name定位。强调了在不同场景下选择合适定位策略的重要性,如优先使用id,对于链接可选择link text或partial link text,以及在必要时使用xpath。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

元素定位

webdriver提供了一系列的元素定位方法

元素webdriver中的方法
idfind_element_by_id()
namefind_element_by_name()
class namefind_element_by_class_name()
tag namefind_element_by_tag_name()
link textfind_element_by_link_text()
partial link textfind_element_by_partial_link_text()
xpathfind_element_by_xpath()
css selectorfind_element_by_css_selector()

 

id元素定位(根据标签的id定位)

示例:百度搜索框

F12查找到页面元素为以下html代码,查找id="kw"的元素

 

#coding:utf-8
from selenium import webdriver
import time

# 百度搜索selenium
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.maximize_window()
driver.find_element_by_id("kw").send_keys("selenium")  # id 定位输入框元素
driver.find_element_by_id("su").click()   # id 定位"百度一下"元素
time.sleep(3)
driver.quit()

 

name元素定位(根据标签的name定位)

示例:百度搜索框

F12查找到页面元素,name="wd"

from selenium import webdriver
import time

# 百度搜索
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.maximize_window()
driver.find_element_by_name("wd").send_keys("selenium")  # name 定位输入框元素
driver.find_element_by_id("su").click()  # id 定位"百度一下"元素
time.sleep(3)
driver.quit()

 

xpath元素定位

示例:百度搜索框

一般的正常copy-xpath就可以了,但是copy不能保证百分百准确,我们也可以手写xpath,写好可以在下方搜索一下

 

from selenium import webdriver
import time

# 百度搜索
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.maximize_window()
driver.find_element_by_xpath("//form/span/input[@id='kw']").send_keys("selenium")  # xpath 定位输入框元素
driver.find_element_by_xpath("//form/span/input[@id='su']").click()   # xpath 定位"百度一下"元素
time.sleep(3)
driver.quit()

 

class name 定位

示例:百度搜索框(按class属性的值来定位用class_name)

一般class_name会定位到多个是要注意的点

from selenium import webdriver
import time

# 百度搜索
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.maximize_window()
driver.find_element_by_class_name("s_ipt").send_keys("selenium")  # class name 定位输入框元素
driver.find_element_by_class_name("bg s_btn").click()   # class name 定位"百度一下"元素
time.sleep(3)
driver.quit()

 

link text定位

link text用来定位文本链接,如通过在百度首页点击'新闻'、'地图'等都可以进入到对应的页面,因此可以用link进行定位:

示例:百度首页“新闻”链接

 

from selenium import webdriver
import time

# 点击百度首页“新闻”标签
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.maximize_window()
driver.find_element_by_link_text("新闻").click()
time.sleep(3)
driver.quit()

 

partial link text定位

partial link text定位方式为link text的一个补充,当文件链接过长时,部分匹配定位

如以下链接过长定位时只需要截取一部分即可

<a href="http://news.baidu.com" name="tj_trnews" class="mnav">这是全世界全球最关注的新闻</a>

driver.find_element_by_partial_link_text("关注的新闻").click()

 

css selector定位(不太常用)

css Selector定位实际就是HTML的css选择器的标签定位

用css定位就不需要从最上面一层开始定位了,可以从当前层最近的容易定位的元素(class或者id)开始。

 

示例:百度搜索框(百度一下这个按钮)

 

id和class原理一样,#id和.class



#coding:utf-8
from selenium import webdriver
import time

# css Selecto选择器定位
# id选择器:#id;
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.maximize_window()
driver.find_element_by_css_selector("#kw").send_keys("selenium")
driver.find_element_by_css_selector("#su").click()
time.sleep(3)
driver.quit()


# class选择器:.class
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.maximize_window()
driver.find_element_by_css_selector(".s_ipt").send_keys("selenium")
driver.find_element_by_css_selector(".btn self-btn bg s_btn").click()
time.sleep(3)
driver.quit()

 

tag name定位(很不常用,不好定位)

当要定位一组元素相同元素时,可以考虑用tagName或name。

 

总结

当页面元素有id属性时,最好尽量用id来定位。

当要定位一组元素相同元素时,可以考虑用tagName或name。

当有链接需要定位时,可以考虑linkText或partialLinkText方式。

xpath定位用的较多,可以直接复制也可以自己写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值