簡體   English   中英

Python Selenium - 嘗試按 class 名稱查找元素時出錯

[英]Python Selenium - error while trying to find element by class name

這是我試圖抓取的網站中的一個元素示例。 它們都沒有 id 或名稱,它們只是像下面的例子那樣有很長的垃圾名稱。

<h1 class="product-name__item product-name__item--name" title="BOEUF HACHE MAIGRE 1 LB">BOEUF HACHE MAIGRE 1 LB</h1>

我嘗試了兩件事並得到了 2 個不同的錯誤。

第一次嘗試:

我嘗試通過 class 名稱找到它。 這會導致超時異常。

try:
element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CLASS_NAME, "product-name__item product-name__item--name"))

    )
    print(element.text)
finally:
    driver.quit()

第二次嘗試:

我嘗試通過 css 選擇器找到它,因為我認為包含空格的 class 名稱存在問題。這導致以下錯誤:TypeError: 'str' object is not callable

try:
element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located(By.CSS_SELECTOR("[class='product-name__item product-name__item--name']"))

    )
    print(element.text)
finally:
    driver.quit()

你有解決辦法嗎? 謝謝你,祝你有美好的一天!

如果以下解決方案以超時結束,則檢查您的元素是否在 iframe 內。

wait = WebDriverWait(driver, 10)
element=wait.until(EC.element_to_be_clickable((By.CLASS_NAME, "product-name__item product-name__item--name")))
print element.text

XPATH

   wait = WebDriverWait(driver, 10)
    element=wait.until(EC.element_to_be_clickable((By.XPATH, "//h1[contains(text(),'BOEUF HACHE MAIGRE 1 L')]")))
    print element.text

注意:請將以下導入添加到您的解決方案中

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait

使用以下css選擇器。

try:
  element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".product-name__item.product-name__item--name")))
  print(element.text)
except:
    driver.quit()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM