Я экспериментировал с автоматизацией некоторых задач с помощью Selenium и смог однажды успешно заставить его работать, однако, когда я попытался воссоздать то, что я сделал, чтобы записать его в класс, и без головы, и с открытым браузером, Я сталкиваюсь с проблемой, когда он либо зависает после входа в систему (с открытым браузером), либо при входе в систему происходит сбой из-за неверного пароля, когда он отключен (та же информация, которая используется, когда браузер открыт и успешно входит в систему).
При использовании настроек по умолчанию (Chromedriver) я могу перейти на страницу входа, заполнить свои данные, нажать кнопку отправки, веб-страница работает как надо, но следующую строку кода, которую я запускаю, независимо от того, что (get_cookies, любой вид вызова find, get_screenshot_as_file), он будет зависать, и время ожидания истечет, если у меня будет применен параметр тайм-аута, если не применяется, я позволил ему работать в течение 5 минут, и ничего не происходило.
При применении опции без головы к драйверу (желаемая функциональность) через снимки экрана веб-страницы я вижу, что он переходит на страницу и заполняет всю информацию должным образом, однако он всегда говорит вход в систему не выполнен из-за неверного имени пользователя / пароля при отправке, но это точная информация, использованная в приведенном выше, когда он вошел в систему просто отлично (это может быть связано с ie cook? Не уверен, что все изменения, когда применяется безголовый).
Я перезапустил свой компьютер, обновил все пакеты, перезапустил текстовый редактор (Atom работает на Hydrogen), обновил Chrome, удалил Chrome, выполнил каждую комбинацию опций, которую только мог придумать, и я до сих пор Невозможно воссоздать мой первый запуск, где он работал просто отлично.
Версии: * Ma c OSX Catalina 10.15 * Python: 3.6.8 * Селен: 3.141.0 * Chrome: 80.0.3987.163
- РЕДАКТИРОВАНИЕ ТЕКУЩЕГО КОДА (Мой текстовый редактор настроен на работу как блокнот Jupyter для справки, и я перечислил все варианты, которые я пробовал, не все включены в каждый прогон, который я пробовал) -
LOGIN = os.environ.get['BANKUSER']
PASSWORD = os.environ.get['BANKPASS']
chrme_drvr = '/usr/local/bin/chromedriver'
options = webdriver.ChromeOptions()
options.binary_location = "/Applications/Google
Chrome.app/Contents/MacOS/Google Chrome"
options.add_argument("--window-size=300,150")
options.add_argument("--disable-gpu")
options.add_argument("--disable-extensions")
options.add_argument("--proxy-server='direct://'")
options.add_argument("--proxy-bypass-list=*")
options.add_argument("--start-maximized")
options.add_argument("--headless")
options.add_argument("--webdriver-logfile=webdrive.log")
options.add_argument("--DBUS_SESSION_BUS_ADDRESS=/dev/null ")
service_args = []
service_log_path = './chromedriver.log'
driver = webdriver.Chrome(chrme_drvr,
options=options,
service_args=service_args,
service_log_path=service_log_path)
login_url = 'https://www.schwab.com/public/schwab/nn/login/login.html&lang=en'
driver.get(login_url)
driver.switch_to.frame('loginIframe')
username = driver.find_element_by_id('LoginId')
password = driver.find_element_by_id('Password')
username.send_keys(LOGIN)
password.send_keys(PASSWORD)
driver.find_element_by_id('LoginSubmitBtn').click() #Code works through this line when not in headless mode, will be an invalid login when in headless mode
driver.get_screenshot_as_file("test.png") # This hangs
driver.get_cookies() # This hangs
element = browser.find_element_by_id("accounts_summary") # This hangs
``