Python Selenium - ошибка при попытке найти элемент по имени класса - PullRequest
1 голос
/ 29 апреля 2020

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

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

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

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

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

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

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

Ответы [ 2 ]

1 голос
/ 30 апреля 2020

Используйте следующий селектор 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 голос
/ 29 апреля 2020

, если приведенное ниже решение заканчивается временем ожидания, проверьте, находится ли ваш элемент в пределах 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...