簡體   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