繁体   English   中英

通过 id 查找多个元素

[英]find multiple elements by id

我正在尝试通过它们各自的 id 查找多个元素元素被命名

dcm-reservation-limit-multiple-input-generic-X

X 是元素的数量,它可以是:

dcm-reservation-limit-multiple-input-generic-0
dcm-reservation-limit-multiple-input-generic-1
dcm-reservation-limit-multiple-input-generic-2
...
dcm-reservation-limit-multiple-input-generic-10

而这样的例子不胜枚举。 我已经尝试过这段代码:

pricesToFind = driver.find_elements_by_xpath(".//*[@id='dcm-reservation-limit-multiple-input-generic-']")

没有任何成功,结果总是返回 NULL 即使它们确实存在

一块 HTML 来帮助:

<input _ngcontent-ihk-c34="" autocomplete="off" class="lib-input" maxlength="11" type="text" id="dcm-reservation-limit-multiple-input-variation-0">

输入的名字是javascript随机生成的,所以通过输入的名字来刮是没用的

我个人从未经常使用 Selenium,但我假设知道如何做到这一点。 我会使用一个while循环,然后一遍又一遍地运行它。 (只是让你知道,我无法实际测试这个,因为我在任何网站中都找不到具有相同条件的任何元素)

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

browser = webdriver.Firefox()
browser.get("somerandomwebsitehere.com/index.html")

a = 1
while a <= 100:
   element = browser.find_element(By.ID, "dcm-reservation-limit-multiple-input-generic-" + str(a))
   # Do whatever you want to the element
   a = int(a) + 1

希望这会有所帮助。 我不保证这段代码会起作用,但现在你对如何实现这一点有了一个想法。

使用contains开头

pricesToFind = driver.find_elements_by_xpath(".//*[contains(@id,'dcm-reservation-limit-multiple-input-generic-')]")

pricesToFind = driver.find_elements_by_xpath(".//*[starts-with(@id,'dcm-reservation-limit-multiple-input-generic-')]")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM