Selenium元素定位八大方法

元素定位方式

Selenium提供了八种定位元素方式
1. id
2. class_name
3. tag_name
4. name
5. link_text
6. partial_link_text
7. XPath
8. CSS

id定位

driver.find_element(By.ID,"")

说明: id 定位就是通过元素的 id 属性来定位元素, HTML 规定 id 属性在整个 HTML 文档中必须是唯一的;
前提:元素有 id 属性
# 1. 导入selenium包
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By

# 2. 实例化浏览器驱动对象
driver = webdriver.Chrome()
#窗口最大化
driver.maximize_window()

# 3.输入url
driver.get('http://www.baidu.com')

element = driver.find_element(By.ID,"kw")
element.send_keys("selenium")
# 4.浏览器暂停3秒
sleep(3)
driver.quit()

Class_Name定位

driver.find_element(By.CLASS_NAME,"")

通过元素的class_name属性来定位元素。

所要定位的元素必须有class类名属性。

如果标签有多个class值,使⽤任何⼀个都可以

driver.find_elements(By.CLASS_NAME,"")[下标]

#1.导包
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
#2.实例化浏览器驱动对象
driver = webdriver.Chrome()
#3.输入url
driver.get("https://www.bilibili.com/")
#4.根据calss_name定位并输入2024新年快乐
driver.find_element(By.CLASS_NAME,"nav-search-input").send_keys("2024新年快乐")
#5.定位搜索按钮并点击
driver.find_element(By.CLASS_NAME,"nav-search-btn").click()
sleep(5)
driver.quit()
from time import sleep

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

driver = webdriver.Chrome()
driver.get("https://www.bilibili.com/")
# for ele in driver.find_elements(By.CLASS_NAME,"channel-link"):
#     print(ele.text)
driver.find_elements(By.CLASS_NAME,'channel-link')[4].click()
sleep(5)
driver.quit()

Tag_name 定位 

driver.find_element_by_tag_name(标签名)

通过元素的标签名来定位元素。

 如果⻚⾯存在多个相同标签,默认返回第⼀个。

特点:重复性高,不建议使用 

#1.导包
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
#2.实例化浏览器驱动对象
driver = webdriver.Chrome()
#3.输入url
driver.get("https://www.bilibili.com/")
#4.根据Tag_name定位并输入2024新年快乐
driver.find_element(By.TAG_NAME,"input").send_keys("学习python")
sleep(3)
driver.quit()

Name定位

driver.find_element_by_name(name属性值)

通过元素的name属性来定位元素。所要定位的元素必须有name属性

当前页面可以重复

由于name属性值可以重复,所以使⽤时需要查看是否为唯⼀

#1.导包
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
#2.实例化浏览器驱动对象
driver = webdriver.Chrome()
#3.输入url
driver.get("https://www.baidu.com/")
#4.根据name定位并输入2024新年快乐
driver.find_elements(By.NAME,"wd")[0].send_keys("2024新年快乐")
sleep(5)
driver.quit()

link_text 定位

driver.find_element(By.LINK_TEXT,"")

专门用来定位超链接元素(<a></a>标签)

driver.find_element_by_link_text(超链接的全部文本内容)

from time import sleep

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

driver = webdriver.Edge()
driver.get("https://www.baidu.com/")
driver.find_element(By.LINK_TEXT,"新闻").click()
sleep(3)

partial_link_text 定位

driver.find_element(By.PARTIAL_LINK_TEXT,"")

使用局部文本来定位元素,从字符串任意位置开始,一截连续字符集。

from time import sleep

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

driver = webdriver.Edge()
driver.get("https://www.baidu.com/")
driver.find_element(By.PARTIAL_LINK_TEXT,"新").click()
sleep(3)

CSS定位 

#根据ID定位
driver.find_element(By.CSS_SELECTOR,"#kw").send_keys("ww")
# driver.find_element(By.CSS_SELECTOR,"#su").click()
#根据class属性值定位
# driver.find_element(By.CSS_SELECTOR,".nav-search-input").send_keys("新年快乐")
# driver.find_element(By.CSS_SELECTOR,".nav-search-btn").click()
#根据name属性定位
# driver.find_element(By.CSS_SELECTOR,"[name='wd']").send_keys("新年快乐")
# driver.find_element(By.CSS_SELECTOR,".nav-search-btn").click()
#根据标签属性定位
# driver.find_element(By.CSS_SELECTOR,"a[href='https://pan.baidu.com?from=1026962h']").click()
#模糊匹配
# driver.find_element(By.CSS_SELECTOR,"a[href*='an.baidu.com?from=1026962h']").click()
#匹配开头
# driver.find_element(By.CSS_SELECTOR,"a[href*='https://pan.baidu.com?from=1']").click()
#匹配结尾
# driver.find_element(By.CSS_SELECTOR,"a[href$='https://pan.baidu.com?from=1026962h']").click()
#组合定位
# driver.find_element(By.CSS_SELECTOR,"input.s_ipt").send_keys("selenimu")

XPATH定位

driver.find_element(By.XPATH,'')
from time import sleep

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

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://www.baidu.com/")
driver.find_element(By.XPATH,'/html/body/div/div/div[3]/a[3]').click()
sleep(3)
driver.quit()
#绝对路径
# driver.find_element(By.XPATH,'/html/body/div/div/div[3]/a[3]').click()
#根据ID定位
# driver.find_element(By.XPATH,'//input[@id="kw"]').send_keys("selenium")
#根据CLASS定位
# driver.find_element(By.XPATH,"//input[@class='s_ipt']").send_keys("selenium")
#根据name定位
# driver.find_element(By.XPATH,"//input[@name='wd']")
#多个属性组合定位
# driver.find_element(By.XPATH,"//input[@name='wd' and @class='s_ipt']").send_keys("selenium")
#根据多组数据使用下标定位
# driver.find_element(By.XPATH,"//div[@id='s-top-left']/a[4]").click()
#根据SPAN文本内容定位
# driver.find_element(By.XPATH,"//span[contains(text(),'一图')]").click()
#根据同级弟弟定位
# driver.find_element(By.XPATH,"//a[contains(text(),'贴吧')and @class = 'mnav c-font-normal c-color-t']/following-sibling::a").click()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值