有没有办法将 find_element_by_xpath 放在 for 循环中?
Is there a way to put find_element_by_xpath inside for loop?
我正在使用 python 和 selenium 来尝试迭代一个循环。
这是我的代码:
rowsArray = driver.find_elements_by_class_name("search-results__result-item")
countRows = (len(rowsArray))
这样我找到 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' class 的元素内获取元素,我尝试在循环内使用 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 迭代循环的正确方法是什么?
如果我对你的问题理解正确,那么是的,它是 possible.if 你每次都需要访问同一父元素下的子元素,你可以使用以下两个选项。
选项 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')]")
//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
我正在使用 python 和 selenium 来尝试迭代一个循环。
这是我的代码:
rowsArray = driver.find_elements_by_class_name("search-results__result-item")
countRows = (len(rowsArray))
这样我找到 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' class 的元素内获取元素,我尝试在循环内使用 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 迭代循环的正确方法是什么?
如果我对你的问题理解正确,那么是的,它是 possible.if 你每次都需要访问同一父元素下的子元素,你可以使用以下两个选项。
选项 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')]")
//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