Как мне нажать кнопку на веб-сайте, используя селен - python? - PullRequest
0 голосов
/ 12 июля 2020

Я пытаюсь нажать «Загрузить еще» на странице, использующей селен. Я использовал приведенный ниже код css_selector:

element= driver.find_element_by_css_selector('#amscroll-page-2]')
driver.execute_script("arguments[0].scrollIntoView(true);", element)

Я получаю следующую ошибку.

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".amscroll-load-button"}
  (Session info: chrome=83.0.4103.61)

и я использовал код xpath:

elemnent=driver.find_element_by_xpath('//*[@id="amscroll-page-2"]')
driver.execute_script("arguments[0].scrollIntoView();", element)
time.sleep(5)
login=element.click()

я получаю следующая ошибка

raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <div class="amscroll-page loading" id="amscroll-page-2" rel="2">...</div> is not clickable at point (382, 18). Other element would receive the click: <div class="naaod__content">...</div>
  (Session info: chrome=83.0.4103.61)

Код html того места, где я хочу прокрутить вниз и щелкнуть:

    <div class="amscroll-page loading" id="amscroll-page-2" rel="2"><input type="button" 
class="amscroll-load-button" style="background: #2675C2;" onclick="amscroll_object.loadNextPage(2);" value="Load More"></div>

Здесь есть кнопка «Загрузить еще», которую я хочу нажать на использование селена.

Ответы [ 2 ]

2 голосов
/ 12 июля 2020

Для этого вы должны использовать функцию click() из модуля selenium. Мы найдем кнопку с CSS selector - это уменьшит вероятность того, что будет выбран неправильный элемент

self.webdriver.find_element_by_css_selector('input[class="amscroll-load-button"]').click()

Однако я бы рекомендовал использовать этот код

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

WebDriverWait(self.webdriver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'input[class="amscroll-load-button"]'))).click()

Это код проверяет, является ли кнопка кликабельной X секунд, и если да, то будет нажат.

1 голос
/ 13 июля 2020

Мне удалось решить эту проблему с помощью следующего кода:

button = driver.find_element_by_xpath("/html/body/div[3]/div/div[1]/div[2]/div[2]/div[2]/div[3]/div[1]")
ActionChains(driver).move_to_element(button).click(button).perform()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...