我正在使用帶有 selenium 的 python 來嘗試迭代一個回圈。
這是我的代碼:
rowsArray = driver.find_elements_by_class_name("search-results__result-item")
countRows = (len(rowsArray))
這樣我fint countRows = 25 然后我嘗試在for回圈中迭代:
for i in range(countRows):
row = driver.find_elements_by_class_name("search-results__result-item")[i]
print(row)
這種方式效果很好,但是由于我需要在具有“search-results__result-item”類的元素中獲取元素,因此我嘗試在回圈中使用 xpath 對其進行更改:
row = driver.find_element_by_xpath(".//li[contains(@class, 'search-results__result-item')][" str(i) "]"
或者
row = driver.find_element_by_xpath("//li[@class='search-results__result-item']" str(i) "]")
但我得到的只是資訊:
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: //li[@class='search-results__result-item'][0]
使用 XPath 迭代回圈的正確方法是什么?
uj5u.com熱心網友回復:
//li[@class='search-results__result-item'][0]
線索在這里[0]并不代表它應該從任何節點開始[1]
或使用以下代碼:
j = 1
for i in range(len(driver.find_elements_by_class_name("search-results__result-item"))):
row = driver.find_element_by_xpath(f"(.//li[contains(@class, 'search-results__result-item')])[{j}]")
print(row.text)
j = j 1
uj5u.com熱心網友回復:
如果我正確理解了您的問題,那么是的。如果您每次都需要訪問同一父級下的子元素,則可以使用以下兩個選項。
選項1:
rowsArray = driver.find_elements_by_class_name("search-results__result-item")
countRows = (len(rowsArray))
for i in range(countRows):
childelement=rowsArray[i].find_element_by_xpath(".//li[contains(@class, 'search-results__result-item')]")
選項 2:
rowsArray = driver.find_elements_by_class_name("search-results__result-item")
for row in rowsArray:
childelement=row.find_element_by_xpath(".//li[contains(@class, 'search-results__result-item')]")
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/421993.html
標籤:
下一篇:在Rspec中進行測驗時,我是否讓VCR在Javascript/Capybara/Selenium中獲取外部API呼叫?
