Selenium ожидания доступности кнопки

Делаю кликер, который нажимает на кнопку, как только эта кнопка становится доступна (у класса кнопки сервером убирается disabled). Но почему то даже тогда, когда кнопка становится доступна, программа не нажимает ее. Использую нахождение по xpath потому что кнопка на сайте часто меняет свой класс.
Вот код функции:

url = input()
    browser.get(url)
    time.sleep(15)
       try:
            wait = WebDriverWait(browser, 900)
            ButtBuy = wait.until(EC.element_to_be_clickable((By.XPATH, '//button[contains(@text, "Купить")]')))
        except:
            print("Ошибка нахождения кнопки покупки, приложение закроется через 30 сек.")
            time.sleep(30)
            browser.quit()
        else:
            ButtBuy.click()
            wait = WebDriverWait(browser, 5)
            ButtConfirm = wait.until(EC.element_to_be_clickable((By.XPATH, '/html/body/div[8]/div/div/div[2]/button[2]')))
            ButtConfirm.click()

Поясн. Buttbuy это сама кнопка покупки, а buttconfirm это кнопка подтверждения, которая появляется потом.

Примерный сценарий использования: Ввел url, отошел от компьютера, а через 10 минут кнопка становится активна и программа автоматически ее нажимает.(10 минут это не точное значение, может быть как 3, 5, 6 и т.д.)


Ответы (1 шт):

Автор решения: Константин Николаевич Бояр II

Можно попробовать вариант через бесконечный цикл, который будет раз в 30 секунд проверять элемент на видимость, и если он увидит кнопку - нажмет на нее, если нет - вернется к началу цикла

try:
    while True:

        wait = WebDriverWait(browser, 900)
        time.sleep(30)
        if ButtBuy = wait.until(EC.element_to_be_clickable((By.XPATH, 
    '//button[contains(@text, "Купить")]'))):

            ButtBuy.click()
            wait = WebDriverWait(browser, 5)
            ButtConfirm = wait.until(EC.element_to_be_clickable((By.XPATH, '/html/body/div[8]/div/div/div[2]/button[2]')))
            ButtConfirm.click()
    else: 
        continue  
except KeyboardInterrupt: 
    pass 
→ Ссылка