我正在嘗試使用相同的類名抓取不同的元素。以下陳述效果很好。
browser.find_element(By.XPATH, "(//div[@class= 'jumbo-tracker'])[1]").click()
browser.find_element(By.XPATH, "(//div[@class= 'jumbo-tracker'])[2]").click()
... 等等。
現在,如果我把它放在一個回圈中,它就不起作用了。看起來,它無法識別 (//div[@class= 'jumbo-tracker'])[i]
這是代碼:
for i in range(1,length 1):
browser.find_element(By.XPATH, "(//div[@class= 'jumbo-tracker'])[i]").click()
sleep(5)
browser.find_element(By.XPATH, "//div[@class='sc-1y3q50z-3 eiMLBn']").click()
sleep(5)
sno.append(restaurant)
restaurant_name= browser.find_element(By.XPATH,"//h1[contains(@class, 'sc-7kepeu-0 sc-kafWEX kTxZkY')]").text
name.append(restaurant_name)
browser.back()
browser.back()
sleep(5)
這是一個例外:
NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"(//div[@class= 'jumbo-tracker'])[i]"}
請幫忙。
uj5u.com熱心網友回復:
您可以單擊所有元素保留在 for 回圈中,并且您必須使用元素而不是元素。
clicks = browser.find_elements(By.XPATH, "//div[@class= 'jumbo-tracker']")
for click in clicks:
click = click.click()
time.sleep(2)
uj5u.com熱心網友回復:
范圍()
該range()函式創建一個數字序列。
因此,在使用f 字串在xpath中傳遞變數時,您需要將as轉換為變數替換,并且可以使用以下代碼行:numberstring
for i in range(1,length 1):
browser.find_element(By.XPATH, f"(//div[@class= 'jumbo-tracker'])[{str(i)}]").click()
uj5u.com熱心網友回復:
使用字串插值。字串插值是將變數的值替換為字串中的占位符的程序。此示例(基于您的代碼)使用 f 字串:
for i in range(1,length 1):
browser.find_element(By.XPATH, f"(//div[@class= 'jumbo-tracker'])[{i}]").click()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/459896.html
