Скрипт не может ввести логин и пароль в стим
Это автоматический логин на сайте через стим через OAuth. По идее, открывается страница -> по XPATH ищутся поля ввода -> прокликиваются и вводятся значения. Проблема в том, что я не понимаю, почему именно так происходит и на каком моменте (локализация или набор) скрипт встаёт и не может ничего сделать. Даже отключил --headless, но всё равно не смог выяснить причину такого поведения программы.
def get_driver(proxy=None):
options = uc.ChromeOptions()
# options.add_argument("--headless")
options.add_argument("--disable-gpu")
options.add_argument("--window-size=1920,1080")
options.add_argument("--no-sandbox")
options.add_argument("--disable-dev-shm-usage")
# Chromium path
options.binary_location = f"{BASE_DIR}/Utility/browser/bin/chrome.exe"
if proxy:
options.add_argument(f'--proxy-server={proxy}')
driver = uc.Chrome(options=options)
driver.set_page_load_timeout(10)
return driver
def extract_cookies(driver):
return driver.get_cookies() # Cookie Lists
def set_input_js(driver, xpath, text):
input_el = WebDriverWait(driver, 10).until(
ec.presence_of_element_located((By.XPATH, xpath))
)
driver.execute_script("""
arguments[0].value = arguments[1];
arguments[0].dispatchEvent(new Event('input', { bubbles: true }));
arguments[0].dispatchEvent(new Event('change', { bubbles: true }));
""", input_el, text)
def steam_login(driver, login, password, shared_secret):
try:
logging.info(f"? Открываю страницу авторизации Steam для {login}...")
driver.get("https://auth.cybershoke.net/steam")
# Ждём появления поля логина
WebDriverWait(driver, 10).until(
ec.presence_of_element_located((By.XPATH, "/html/body/div[1]/div[7]/div[4]/div[1]/div[1]/div/div/div/div[2]/div[2]/form/div[1]/input"))
)
# Ввод логина через JS
set_input_js(driver, "/html/body/div[1]/div[7]/div[4]/div[1]/div[1]/div/div/div/div[2]/div[2]/form/div[1]/input", login)
time.sleep(0.3)
# Ввод пароля через JS
set_input_js(driver, "/html/body/div[1]/div[7]/div[4]/div[1]/div[1]/div/div/div/div[2]/div[2]/form/div[2]/input", password)
time.sleep(0.3)
# Нажимаем Enter
password_input = WebDriverWait(driver, 30).until(
ec.element_to_be_clickable((By.XPATH, "/html/body/div[1]/div[7]/div[4]/div[1]/div[1]/div/div/div/div[2]/div[2]/form/div[2]/input"))
)
password_input.send_keys(Keys.RETURN)
В каком месте эта ошибка появляется, может, мне стоит использовать другие библиотеки?