Python Selenium4 ChomeDriver мультипоточный браузер не всегда нажимает на кнопку

while True:
                proxy = str(TakeProxy(acc))
                if not CheckProxy(proxy, acc):
                    continue
                else:
                    break

            useragent = useragents[random.randint(0,len(useragents))]
            chrome_options = Options()
            chrome_options.headless = SHOW_BROWSER
            
            chrome_options.add_argument('--proxy-server=' + proxy)
            chrome_options.add_argument('--profile-directory=' + str(time.time()))
            chrome_options.add_argument("--disable-extensions")
            chrome_options.add_argument("--disable-gpu")
            chrome_options.add_argument("--disable-dev-shm-usage")
            chrome_options.add_argument("--incognito")
            _width = random.randint(1080,2560)
            _height = random.randint(1000,1500)
            chrome_options.add_argument(f"--window-size={_width},{_height}")
            chrome_options.add_argument("--start-maximized")
            chrome_options.add_argument(f"--user-agent='{useragent}'")

            chrome_options.binary_location = f'{mainDir}\\utils\chrome\GoogleChromePortable\App\Chrome-bin\chrome.exe'
            driver = undetected_chromedriver.Chrome(
                executable_path=mainDir + '\\utils\\chromedriver.exe',
                options=chrome_options
            )
            driver.set_window_size(_width, _height)
            driver.timeouts.page_load = _TIMEOUT
            driver.timeouts.script = _TIMEOUT
            driver.timeouts.implicit_wait = _TIMEOUT
            driver.set_page_load_timeout(_TIMEOUT)
            driver.set_script_timeout(_TIMEOUT)

            try:

                driver.get("https://profile.callofduty.com/codm/loginMobileGame")
                btn_signin = driver.find_element(By.ID, 'login-button')
                _errs = 0
                
                sleep(5)
                while True:

                    captcha = ''
                    try:
                        WriteLog('Начали решать каптчу', acc, logname)
                        solver = TwoCaptcha('key')
                        captcha = solver.recaptcha(sitekey='6LfjPWwbAAAAAKhf5D1Ag5nIS-QO2M4rX52LcnDt',
                                                   url='https://profile.callofduty.com', version='v2')  # , **ConfigV2)

                        captcha = captcha['code']
                        WriteLog('Решили каптчу', acc, logname)

                        break
                    except Exception as e:
                        if _errs >= 8:
                            WriteLog('Вышло время решения каптчи')
                            ERRORS += 1
                            WriteResult(acc, 'e', result_folder)
                            return False

                        WriteLog(f'Ошибка решения каптчи: {str(e)}', acc, logname)
                        sleep(5)
                        _errs += 1
                        continue

                WriteLog('Выполняю скрипт', acc, logname)
                driver.find_element(By.ID, 'username').send_keys(login)
                driver.find_element(By.ID, 'password').send_keys(password)
                driver.execute_script(f'''document.getElementById('g-recaptcha-response').value = "{captcha}";''')
                WriteLog('Выполнил скрипт', acc, logname)

                WriteLog('Отправляем форму', acc, logname)
                # driver.ActionChains(driver).move_to_element(btn_signin).click(btn_signin).perform()
                # btn_signin.click()
                ActionChains(driver).click(btn_signin).perform()
                WriteLog('Отправили форму', acc, logname)
                response = driver.page_source

                if 'Captcha error. Please try again' in response:
                    raise Exception('timeout')

                if 'Registration Complete page - Mobile Game' in response:
                    WriteLog('Аккаунт хороший!', acc, logname)
                    WriteResult(acc, 'g', result_folder)
                    GOOD += 1
                else:
                    WriteLog('Аккаунт плохой!', acc, logname)
                    WriteResult(acc, 'b', result_folder)
                    BAD += 1

Проблема в том что в 2 потока он проверяет 2-4 аккаунта и дальше висит при нажатии на кнопку, в чем проблема может быть?


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