Как нажать на кнопку, используя селен питон - PullRequest
1 голос
/ 11 апреля 2019

Я новичок в Python и Selenium и хочу нажать кнопку "Afficher plus" в этом URL .

я пробовал этот код:

plus = driver.find_element_by_css_selector("button[class='b-btn b- 
ghost']")
plus.click()

но это не работает, и я получаю эту ошибку:

selenium.common.exceptions.WebDriverException: Сообщение: неизвестная ошибка: Элемент ... не активен в точке (390, 581). Другой элемент получит щелчок: ...

Ответы [ 2 ]

1 голос
/ 11 апреля 2019

Элемент, на который вы пытаетесь щелкнуть, не активируется или может перекрываться.

Попробуйте щелкнуть указанный элемент, выполнив функцию щелчка сценария Java.

driver.execute_script("arguments[0].click();", element)

С другой стороны, ваша страница может быть еще не полностью загружена, поэтому элемент может быть еще не активен, вы можете использовать условие ожидания:

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

element = WebDriverWait(driver, 20).until(
EC.element_to_be_clickable(By...)) //change selector

element.click();
0 голосов
/ 11 апреля 2019

Чтобы щелкнуть по кнопке с текстом Afficher plus de biens в этом URL , необходимо заставить WebDriverWait , чтобы элемент был активным , и вы можете использовать любое из следующих решений:

  • Использование CSS_SELECTOR:

    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.b-btn.b-ghost"))).click()
    
  • Использование XPATH:

    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='b-btn b-ghost' and contains(., 'Afficher plus')]"))).click()
    
  • Примечание : необходимо добавить следующие операции импорта:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...