@san_m_m

Как нажать на кнопку с помощью Selenium?

Добрый день
Не могу понять, как нажать на кнопку, так как встречается в нескольких частях страницы.
Попробовал так, но не получается...
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import pandas as pd
import time

driver = webdriver.Chrome(executable_path='D:\chromedriver.exe')

driver.get("https://www.soglasie.ru/agent_search/")
search = driver.find_element_by_xpath("//input[@class='input-smart__input']")
search.send_keys('Иван')
button = driver.find_element_by_xpath("//div[@class='s-btn']")
button.click()

#button_c = driver.find_element_by_tag_name("div.s-btn__content")[7].click()
#Такой вариант не работает 

try:
    main = WebDriverWait(driver, 30).until(
        EC.presence_of_element_located((By.TAG_NAME, "div.check"))
    )
    print(main.text)
except:
    driver.quit()

driver.quit()


А также вопрос как сделать так чтобы нажать на раскрытие таблицы столько, сколько нужно для раскрытия всех данных...
  • Вопрос задан
  • 4574 просмотра
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Хоть указывайте, какую кнопку нажать нужно

Через XPath можно найти следующим образом:
driver.find_element_by_xpath("//span[text()='Показать еще']")


Дальше уже можно сделать по простому, чтобы не заморачиваться со всякими Wait

from selenium.common.exceptions import NoSuchElementException

search = driver.find_element_by_xpath("//input[@class='input-smart__input']")
search.send_keys('Иван')
button = driver.find_element_by_xpath("//div[@class='s-btn']")
button.click()

while True:

    while True:
        # Если данные все еще загружаются, классы кнопки меняются на `s-btn__loader`
        if driver.find_elements_by_class_name('s-btn__loader'):
            time.sleep(5)
        else:
            break

    try:
        load_more_btn = driver.find_element_by_xpath("//span[text()='Показать еще']")
    except NoSuchElementException:
        print('Загрузили страницу до конца')
        break
    
    load_more_btn.click()

    time.sleep(5)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы