小笔记-简单但够用系列_selenium xpath 历遍元素踩坑记录

selenium 使用 xpath 获取以下的 h4 元素文本并进行历遍点击。
但xpath定位时一直只能定位到第一个元素内容,不能形成列表进行历遍。

xml 示例文件

...
<div id="floor-user-profile_485">
	<h1>
		<h2>
			<h3>
				<h4>1</h4>
			</h3>
			<h3>
				<h4>2</h4>
			</h3>
			<h3>
				<h4>3</h4>
			</h3>
			<h3>
				<h4>4</h4>
			</h3>
			<h3>
				<h4>5</h4>
			</h3>
		<h2>
	<h1>
</div>
...

在浏览器控制台使用 ‘//*[@id=“floor-user-profile_485”]//h4’ 可以定位到所需的多个文本,但在 selenium 中定位只能定位到首个元素。

print(test.find_element_by_xpath('//*[@id="floor-user-profile_485"]//h4'))

<selenium.webdriver.firefox.webelement.FirefoxWebElement (session="9f1e16ca-ce27-46db-897b-269a5fefaca2", element="d3a726d2-b993-4511-8917-bd804667d690")>

原因: find_element_by_xpath() 定位的是单个元素或是首个元素,如需定位多个元素以形成列表用作后续的处理操作,需要使用 find_elements_by_xpath() 。

ltext = test.find_elements_by_xpath('//*[@id="floor-user-profile_485"]//h4')
print("xpath values is ",ltext)

lists = []
for i in ltext:
    a = i.text
    i.click()
    lists.append(a)
    time.sleep(1)

print(lists)

输出

xpath values is  [<selenium.webdriver.firefox.webelement.FirefoxWebElement (session="9f1e16ca-ce27-46db-897b-269a5fefaca2", element="d3a726d2-b993-4511-8917-b
d804667d690")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="9f1e16ca-ce27-46db-897b-269a5fefaca2", element="bdc8c928-2de4-4252-96c9-daa
d07894c96")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="9f1e16ca-ce27-46db-897b-269a5fefaca2", element="7a0337c9-217e-4807-955d-5f7b9
5bb5109")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="9f1e16ca-ce27-46db-897b-269a5fefaca2", element="93c79b05-435b-4715-b9df-b71dbcb
17617")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="9f1e16ca-ce27-46db-897b-269a5fefaca2", element="db9f07a2-f30e-497d-b623-3004e76c6
0e5")>
['1','2','3','4','5']

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值