Selenium通过文本定位并且实现操作

Selenium通过文本定位并且实现操作

背景

对于Selenium初学者来说,定位方式采用精准定位作为简单也就是通过获取精准的位置信息进行定位。例如://*[@id="s-top-left"]/a[1],通过语句driver.find_element(By.XPATH,'//*[@id="s-top-left"]/a[1]')即可以精准的进行定位元素,但是此场景只针对这一个页面,也就是说类似的并不通用并且当页面发生小规模改动时,也会对定位结果产生影响。这时候我们就可以考虑通过文本去定位元素,当然文本要保证唯一性才能进行下步操作(单单获取信息那就不必考虑这么多了)。

语法

在实现这个功能时我们采用两种方式,一个是精准定位文本,意思就是说文本信息全部匹配才能返回正确值:driver.find_element(By.XPATH, "//a[text()='新闻']"),但是通常我们使用时并不需要非常精准,这样反而会给我们自己造成困扰,因此我们会采用模糊匹配进行定位:driver.find_element(By.XPATH, "//*[contains(text(),'新闻')]"),这样只要部分匹配即可以输出结果。

验证

我们以百度为例,代码如下:

mport time

from selenium import webdriver
from selenium.webdriver.common.by import By
# 请求网址
url = 'https://www.baidu.com/'
# 实例化
driver = webdriver.Chrome()
# 获取该网址信息
driver.get(url)
# 模糊匹配,通过文本定位信息
content = driver.find_element(By.XPATH, "//*[contains(text(),'新闻')]")
# 完全匹配
# content=driver.find_element(By.XPATH, "//a[text()='新闻']")
# 输出定位结果
print(content.text)
# 关闭浏览器
driver.close()

最终得出的结果为:

D:\pythonProject\venv\Scripts\python.exe D:\pythonProject\venv\csdn.py 
新闻

Process finished with exit code 0

往往返回结果并不是我们想要的,我们只是为了定位元素,然后进行下一步操作,如下我做了一个点击的操作,那么他就可以实现页面跳转功能:

content = driver.find_element(By.XPATH, "//*[contains(text(),'新闻')]").click()

结果为:
在这里插入图片描述

总结

对于比较复杂的场景,只能知道自己想定位什么文本,却不知道怎么定位到这个地址的时候,我们可以采用这种方法进行实现。愿对你有所帮助!

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值