mirniycruxix
@mirniycruxix

Почему не нажимается кнопка Selenium?

У меня есть код
import requests
import time

import selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException

link = "https://site.ru/"

driver = webdriver.Firefox(executable_path = r'D:/Apps/Geckodriver/geckodriver.exe')
driver.get(link)

driver.execute_script("document.getElementsByClassName('button_to_click')[0].click();")

while True:
    try:
        number = driver.find_element(By.CLASS_NAME, 'element_to_find')
        break
    except NoSuchElementException:
        continue

result = driver.find_element(By.CLASS_NAME, 'element_to_find').text.replace(" ","")
print(result)


Чтобы появился .element-to-find нужно нажать кнопку, я делаю перед циклом
driver.execute_script("document.getElementsByClassName('button_to_click')[0].click();")
но это не срабатывает. Я хочу, чтобы сначала нажалась кнопка и потом запустить while True: который уже написан. Почему не нажимается кнопка и как решить эту проблему?
  • Вопрос задан
  • 264 просмотра
Решения вопроса 1
mirniycruxix
@mirniycruxix Автор вопроса
Решение оказалось в том, что в цикле перед continue в конце нужно было поставить
driver.execute_script("document.getElementsByClassName('button_to_click')[0].click();")
То есть итоговый код получился такой:
import requests
import time

import selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException

link = "https://site.ru/"

driver = webdriver.Firefox(executable_path = r'D:/Apps/Geckodriver/geckodriver.exe')
driver.get(link)

while True:
    try:
        number = driver.find_element(By.CLASS_NAME, 'element_to_find')
        break
    except NoSuchElementException:
        driver.execute_script("document.getElementsByClassName('button_to_click')[0].click();")
        continue

result = driver.find_element(By.CLASS_NAME, 'element_to_find').text.replace(" ","")
print(result)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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