鱼C论坛

 找回密码
 立即注册
查看: 2069|回复: 7

selenium中如何用XPATH选择最后一个标签元素呢?

[复制链接]
发表于 2023-8-12 11:17:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如题所示:selenium中如何用XPATH选择最后一个标签元素呢?

比如我在百度搜索打印机,然后选择最后一个列表元素打开。

1691810036831.jpg

代码如下:
import time
from selenium import webdriver
from selenium.webdriver.common.by import By

browser = webdriver.Edge()
browser.get("https://www.baidu.com/")
b = browser.find_element(By.ID,"kw")
b.send_keys("打印机")
b.submit()
time.sleep(5)
c = browser.find_element(By.XPATH,"//div[@id='content_left']//h3[@class='c-title t t tts-title']/a")
c.click()
time.sleep(5)

结果并不能获取,请问该如何修改代码呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-12 11:17:16 | 显示全部楼层
问题描述:
在使用Selenium中使用XPath选择最后一个标签元素的情况下,希望能够修改代码以正确选择并点击最后一个列表元素。

解决方案:
要选择最后一个标签元素,你可以使用XPath的last()函数。在你的情况下,你可以通过修改XPath来选择最后一个标签元素。

修改后的代码:
import timefrom selenium import webdriverfrom selenium.webdriver.common.by import Bybrowser = webdriver.Edge()browser.get(\https://www.baidu.com/\)search_input = browser.find_element(By.ID, \kw\)search_input.send_keys(\打印机\)search_input.submit()time.sleep(5)# 修改XPath以选择最后一个列表元素last_result_xpath = \//div[@id='content_left']//h3[@class='c-title t']/a[last()]\last_result_link = browser.find_element(By.XPATH, last_result_xpath)last_result_link.click()time.sleep(5)browser.quit()
在这个修改后的代码中,XPath被修改为//div[@id='content_left']//h3[@class='c-title t']/a[last()],其中[last()]部分表示选择最后一个匹配的元素。这样,你就可以选择并点击最后一个列表元素。

希望这个解决方案能够帮助你正确选择并点击最后一个列表元素。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-12 11:17:16 | 显示全部楼层
要选择最后一个标签元素,你可以使用XPath的 last() 函数。在你的代码中,你可以将XPath表达式修改为 "(//div[@id='content_left']//h3[@class='c-title t t tts-title']/a)[last()]" 。

修改后的代码如下:
import time
from selenium import webdriver
from selenium.webdriver.common.by import By

browser = webdriver.Edge()
browser.get("https://www.baidu.com/")
b = browser.find_element(By.ID,"kw")
b.send_keys("打印机")
b.submit()
time.sleep(5)
c = browser.find_element(By.XPATH,"(//div[@id='content_left']//h3[@class='c-title t t tts-title']/a)[last()]")
c.click()
time.sleep(5)

这样就可以选择最后一个匹配的 <a> 标签元素并进行点击操作了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-12 11:17:45 | 显示全部楼层
要选择最后一个标签元素,可以使用XPath的last()函数。以下是修改后的代码示例:
import time
from selenium import webdriver
from selenium.webdriver.common.by import By

browser = webdriver.Edge()
browser.get("https://www.baidu.com/")

b = browser.find_element(By.ID, "kw")
b.send_keys("打印机")
b.submit()

time.sleep(5)

# 修改这里的XPath,添加[last()]以选择最后一个元素
c = browser.find_element(By.XPATH, "//div[@id='content_left']//h3[@class='c-title t t tts-title']/a[last()]")
c.click()

time.sleep(5)

在XPath中,[last()]表达式选择XPath所匹配的所有元素中的最后一个元素。将此表达式添加到你的XPath中,即可选择最后一个列表元素进行点击操作。

希望这对你有帮助!如果还有其他问题,请随时提问。
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-12 11:26:38 | 显示全部楼层
陶远航 发表于 2023-8-12 11:17
要选择最后一个标签元素,可以使用XPath的last()函数。以下是修改后的代码示例:

代码行不通
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-12 11:28:10 | 显示全部楼层
isdkz 发表于 2023-8-12 11:17
要选择最后一个标签元素,你可以使用XPath的 last() 函数。在你的代码中,你可以将XPath表达式修改为 "(//d ...

那如何访问末第二个a链接呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-12 11:31:06 | 显示全部楼层
python小小白哟 发表于 2023-8-12 11:28
那如何访问末第二个a链接呢?

用requests,百度的连接不是真实链接
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-12 12:11:15 | 显示全部楼层
歌者文明清理员 发表于 2023-8-12 11:31
用requests,百度的连接不是真实链接

论坛暂时得靠你了,能回花点时间回下。
这样搞下去真不得了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-27 20:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表