Вот пример элемента с сайта, который я пытаюсь очистить. Ни у одного из них нет идентификаторов или имен, у них просто длинное мусорное имя, как в приведенном ниже примере.

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

Я попробовал две вещи и получил 2 разных ошибки.

Первая попытка :

Я пытался найти его по имени класса. Это приводит к исключению тайм-аута.

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, потому что думал, что существует проблема с именем класса, содержащим пробел. Это привело к следующей ошибке: Ошибка типа: объект 'str' не вызывается

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()

У вас есть решение? Спасибо и хорошего дня!

1
cinqrougedesign 29 Апр 2020 в 23:46

2 ответа

Лучший ответ

Используйте следующий 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()
1
KunduK 29 Апр 2020 в 21:47

Если приведенное ниже решение заканчивается временем ожидания, проверьте, находится ли ваш элемент в 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
1
Dipak Bachhav 29 Апр 2020 в 20:56