Подскажите, что не так в коде с webdriver?

InferShark24

Участник
Автор темы
9
0
Что должен делать данный скрипт?
Бот на python, который будет проверять промокоды из блокнота. Бот зайдёт на сайт https://cloud.vkplay.ru/, нажмёт на кнопку с текстом "Начать играть" и введёт туда данные(В строки "Email или телефон" вводится почта, а в строку "Пароль" вводится мой пароль, после в строку "Активация промокода" на сайте будет вводиться промокоды из блокнота и нажиматься Enter. Если появится ошибка "Код активации уже использован", то код переводим в новый блокнот "nevalid", если будет ошибка "Код активации для этой компании уже использован", то отправляем данный код в новый блокнот "valid".


Код:
import time
from selenium import webdriver
from selenium.webdriver.common.by import By

# открытие браузера Firefox
driver = webdriver.Firefox(executable_path='/path/to/geckodriver')

# переход на сайт https://cloud.vkplay.ru/
driver.get('https://cloud.vkplay.ru/')

# ожидание загрузки страницы
time.sleep(5)

# нажатие на кнопку "Начать играть"
driver.find_element(By.XPATH, '//button[text()="Начать играть"]').click()

# ожидание загрузки страницы
time.sleep(5)

# ввод email и пароля
email_input = driver.find_element(By.NAME, 'email')
email_input.send_keys('123123@yandex.ru')
password_input = driver.find_element(By.NAME, 'Пароль')
password_input.send_keys('1231123')

# чтение промокодов из файла
codes = []
with open('codes.txt', 'r') as f:
    for line in f:
        codes.append(line.strip())

# активация промокодов
valid_codes = []
for code in codes:
    try:
        activation_input = driver.find_element_by_name('activation_code')
        activation_input.clear()
        activation_input.send_keys(code)
        activation_input.submit()
        print(f'Код {code} активирован успешно')
        valid_codes.append(code)
    except:
        error_message = driver.find_element_by_xpath('//div[@class="alert alert-danger"]')
        if 'Код активации уже использован' in error_message.text:
            print(f'Код {code} уже использован')
        elif 'Код активации для этой компании уже использован' in error_message.text:
            print(f'Код {code} для этой компании уже использован')
            with open('nevalid.txt', 'a') as f:
                f.write(f'{code}\n')
        else:
            print(f'Неизвестная ошибка при активации кода {code}')

# вывод результатов
print(f'Загружено {len(codes)} кодов')
print(f'Отправлено в блокнот "nevalid": {len(codes)-len(valid_codes)} кодов')
print(f'Отправлено в блокнот "valid": {len(valid_codes)} кодов')

# закрытие браузера
driver.quit()

Почему при шаге вводить данные, он не вводит их и скрипт умирает?