jdholtz / auto-southwest-check-in

A Python script that automatically checks in to your Southwest flight 24 hours beforehand.
GNU General Public License v3.0
458 stars 87 forks source link

Unable to login to pull reservations #215

Closed samdatkins closed 9 months ago

samdatkins commented 9 months ago

Version

7.1

Browser Version

117.0.5938.62

Description

The feature to log a user in to refresh reservations appears to be broken. I noticed I hadn't gotten any notifications in a while and found the attached error logs. I also tried the develop docker image, but it gives a different error (too many login attempts).

I spent a little while reviewing the selenium code, but everything looked reasonable to me. This has been broken for me for a little more than a week so I do not think it is transient.

To Reproduce

Create a config with at least one user's login in it, start script

Expected Behavior

Login to succeed and reservations to be refreshed

Relevant logs and program output

2024-01-31 00:46:58 Process Process-3:
2024-01-31 00:46:58 Traceback (most recent call last):
2024-01-31 00:46:58   File "/app/lib/webdriver.py", line 184, in _click_login_button
2024-01-31 00:46:58     seleniumbase_actions.wait_for_element_not_visible(driver, login_button, timeout=5)
2024-01-31 00:46:58   File "/usr/local/lib/python3.12/site-packages/seleniumbase/fixtures/page_actions.py", line 1030, in wait_for_element_not_visible
2024-01-31 00:46:58     timeout_exception(Exception, message)
2024-01-31 00:46:58   File "/usr/local/lib/python3.12/site-packages/seleniumbase/fixtures/page_actions.py", line 266, in timeout_exception
2024-01-31 00:46:58     raise exc(msg)
2024-01-31 00:46:58 Exception: Element {button#login-btn} was still visible after 5 seconds!
2024-01-31 00:46:58 
2024-01-31 00:46:58 During handling of the above exception, another exception occurred:
2024-01-31 00:46:58 
2024-01-31 00:46:58 Traceback (most recent call last):
2024-01-31 00:46:58   File "/usr/local/lib/python3.12/multiprocessing/process.py", line 314, in _bootstrap
2024-01-31 00:46:58     self.run()
2024-01-31 00:46:58   File "/usr/local/lib/python3.12/multiprocessing/process.py", line 108, in run
2024-01-31 00:46:58     self._target(*self._args, **self._kwargs)
2024-01-31 00:46:58   File "/app/lib/reservation_monitor.py", line 42, in monitor
2024-01-31 00:46:58     self._monitor()
2024-01-31 00:46:58   File "/app/lib/reservation_monitor.py", line 157, in _monitor
2024-01-31 00:46:58     reservations, skip_scheduling = self._get_reservations()
2024-01-31 00:46:58                                     ^^^^^^^^^^^^^^^^^^^^^^^^
2024-01-31 00:46:58   File "/app/lib/reservation_monitor.py", line 182, in _get_reservations
2024-01-31 00:46:58     reservations = webdriver.get_reservations(self)
2024-01-31 00:46:58                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-01-31 00:46:58   File "/app/lib/webdriver.py", line 93, in get_reservations
2024-01-31 00:46:58     self._wait_for_login(driver, account_monitor)
2024-01-31 00:46:58   File "/app/lib/webdriver.py", line 163, in _wait_for_login
2024-01-31 00:46:58     self._click_login_button(driver)
2024-01-31 00:46:58   File "/app/lib/webdriver.py", line 187, in _click_login_button
2024-01-31 00:46:58     driver.click(login_button)
2024-01-31 00:46:58   File "/usr/local/lib/python3.12/site-packages/seleniumbase/core/sb_driver.py", line 54, in click
2024-01-31 00:46:58     page_actions.click(self.driver, *args, **kwargs)
2024-01-31 00:46:58   File "/usr/local/lib/python3.12/site-packages/seleniumbase/fixtures/page_actions.py", line 1526, in click
2024-01-31 00:46:58     element.click()
2024-01-31 00:46:58   File "/usr/local/lib/python3.12/site-packages/selenium/webdriver/remote/webelement.py", line 93, in click
2024-01-31 00:46:58     self._execute(Command.CLICK_ELEMENT)
2024-01-31 00:46:58   File "/usr/local/lib/python3.12/site-packages/selenium/webdriver/remote/webelement.py", line 394, in _execute
2024-01-31 00:46:58     return self._parent.execute(command, params)
2024-01-31 00:46:58            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-01-31 00:46:58   File "/usr/local/lib/python3.12/site-packages/selenium/webdriver/remote/webdriver.py", line 347, in execute
2024-01-31 00:46:58     self.error_handler.check_response(response)
2024-01-31 00:46:58   File "/usr/local/lib/python3.12/site-packages/selenium/webdriver/remote/errorhandler.py", line 229, in check_response
2024-01-31 00:46:58     raise exception_class(message, screen, stacktrace)
2024-01-31 00:46:58 selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <button class="mt4 button button--fluid larger button--yellow" type="submit" id="login-btn" role="submit">...</button> is not clickable at point (712, 311). Other element would receive the click: <div class="backdrop visible active"></div>
2024-01-31 00:46:58   (Session info: chrome=117.0.5938.62)
2024-01-31 00:46:58 
2024-01-31 00:47:11 Process Process-7:
2024-01-31 00:47:11 Traceback (most recent call last):
2024-01-31 00:47:11   File "/app/lib/webdriver.py", line 184, in _click_login_button
2024-01-31 00:47:11     seleniumbase_actions.wait_for_element_not_visible(driver, login_button, timeout=5)
2024-01-31 00:47:11   File "/usr/local/lib/python3.12/site-packages/seleniumbase/fixtures/page_actions.py", line 1030, in wait_for_element_not_visible
2024-01-31 00:47:11     timeout_exception(Exception, message)
2024-01-31 00:47:11   File "/usr/local/lib/python3.12/site-packages/seleniumbase/fixtures/page_actions.py", line 266, in timeout_exception
2024-01-31 00:47:11     raise exc(msg)
2024-01-31 00:47:11 Exception: Element {button#login-btn} was still visible after 5 seconds!
2024-01-31 00:47:11 
2024-01-31 00:47:11 During handling of the above exception, another exception occurred:
2024-01-31 00:47:11 
2024-01-31 00:47:11 Traceback (most recent call last):
2024-01-31 00:47:11   File "/usr/local/lib/python3.12/multiprocessing/process.py", line 314, in _bootstrap
2024-01-31 00:47:11     self.run()
2024-01-31 00:47:11   File "/usr/local/lib/python3.12/multiprocessing/process.py", line 108, in run
2024-01-31 00:47:11     self._target(*self._args, **self._kwargs)
2024-01-31 00:47:11   File "/app/lib/reservation_monitor.py", line 42, in monitor
2024-01-31 00:47:11     self._monitor()
2024-01-31 00:47:11   File "/app/lib/reservation_monitor.py", line 157, in _monitor
2024-01-31 00:47:11     reservations, skip_scheduling = self._get_reservations()
2024-01-31 00:47:11                                     ^^^^^^^^^^^^^^^^^^^^^^^^
2024-01-31 00:47:11   File "/app/lib/reservation_monitor.py", line 182, in _get_reservations
2024-01-31 00:47:11     reservations = webdriver.get_reservations(self)
2024-01-31 00:47:11                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-01-31 00:47:11   File "/app/lib/webdriver.py", line 93, in get_reservations
2024-01-31 00:47:11     self._wait_for_login(driver, account_monitor)
2024-01-31 00:47:11   File "/app/lib/webdriver.py", line 163, in _wait_for_login
2024-01-31 00:47:11     self._click_login_button(driver)
2024-01-31 00:47:11   File "/app/lib/webdriver.py", line 187, in _click_login_button
2024-01-31 00:47:11     driver.click(login_button)
2024-01-31 00:47:11   File "/usr/local/lib/python3.12/site-packages/seleniumbase/core/sb_driver.py", line 54, in click
2024-01-31 00:47:11     page_actions.click(self.driver, *args, **kwargs)
2024-01-31 00:47:11   File "/usr/local/lib/python3.12/site-packages/seleniumbase/fixtures/page_actions.py", line 1526, in click
2024-01-31 00:47:11     element.click()
2024-01-31 00:47:11   File "/usr/local/lib/python3.12/site-packages/selenium/webdriver/remote/webelement.py", line 93, in click
2024-01-31 00:47:11     self._execute(Command.CLICK_ELEMENT)
2024-01-31 00:47:11   File "/usr/local/lib/python3.12/site-packages/selenium/webdriver/remote/webelement.py", line 394, in _execute
2024-01-31 00:47:11     return self._parent.execute(command, params)
2024-01-31 00:47:11            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-01-31 00:47:11   File "/usr/local/lib/python3.12/site-packages/selenium/webdriver/remote/webdriver.py", line 347, in execute
2024-01-31 00:47:11     self.error_handler.check_response(response)
2024-01-31 00:47:11   File "/usr/local/lib/python3.12/site-packages/selenium/webdriver/remote/errorhandler.py", line 229, in check_response
2024-01-31 00:47:11     raise exception_class(message, screen, stacktrace)
2024-01-31 00:47:11 selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <button class="mt4 button button--fluid larger button--yellow" type="submit" id="login-btn" role="submit">...</button> is not clickable at point (712, 311). Other element would receive the click: <div class="backdrop visible active"></div>
2024-01-31 00:47:11   (Session info: chrome=117.0.5938.62)
2024-01-31 00:47:11 
2024-01-31 15:15:40 Process Process-1:
2024-01-31 15:15:40 Traceback (most recent call last):
2024-01-31 15:15:40   File "/app/lib/webdriver.py", line 184, in _click_login_button
2024-01-31 15:15:40     seleniumbase_actions.wait_for_element_not_visible(driver, login_button, timeout=5)
2024-01-31 15:15:40   File "/usr/local/lib/python3.12/site-packages/seleniumbase/fixtures/page_actions.py", line 1030, in wait_for_element_not_visible
2024-01-31 15:15:40     timeout_exception(Exception, message)
2024-01-31 15:15:40   File "/usr/local/lib/python3.12/site-packages/seleniumbase/fixtures/page_actions.py", line 266, in timeout_exception
2024-01-31 15:15:40     raise exc(msg)
2024-01-31 15:15:40 Exception: Element {button#login-btn} was still visible after 5 seconds!
2024-01-31 15:15:40 
2024-01-31 15:15:40 During handling of the above exception, another exception occurred:
2024-01-31 15:15:40 
2024-01-31 15:15:40 Traceback (most recent call last):
2024-01-31 15:15:40   File "/usr/local/lib/python3.12/multiprocessing/process.py", line 314, in _bootstrap
2024-01-31 15:15:40     self.run()
2024-01-31 15:15:40   File "/usr/local/lib/python3.12/multiprocessing/process.py", line 108, in run
2024-01-31 15:15:40     self._target(*self._args, **self._kwargs)
2024-01-31 15:15:40   File "/app/lib/reservation_monitor.py", line 42, in monitor
2024-01-31 15:15:40     self._monitor()
2024-01-31 15:15:40   File "/app/lib/reservation_monitor.py", line 157, in _monitor
2024-01-31 15:15:40     reservations, skip_scheduling = self._get_reservations()
2024-01-31 15:15:40                                     ^^^^^^^^^^^^^^^^^^^^^^^^
2024-01-31 15:15:40   File "/app/lib/reservation_monitor.py", line 182, in _get_reservations
2024-01-31 15:15:40     reservations = webdriver.get_reservations(self)
2024-01-31 15:15:40                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-01-31 15:15:40   File "/app/lib/webdriver.py", line 93, in get_reservations
2024-01-31 15:15:40     self._wait_for_login(driver, account_monitor)
2024-01-31 15:15:40   File "/app/lib/webdriver.py", line 163, in _wait_for_login
2024-01-31 15:15:40     self._click_login_button(driver)
2024-01-31 15:15:40   File "/app/lib/webdriver.py", line 187, in _click_login_button
2024-01-31 15:15:40     driver.click(login_button)
2024-01-31 15:15:40   File "/usr/local/lib/python3.12/site-packages/seleniumbase/core/sb_driver.py", line 54, in click
2024-01-31 15:15:40     page_actions.click(self.driver, *args, **kwargs)
2024-01-31 15:15:40   File "/usr/local/lib/python3.12/site-packages/seleniumbase/fixtures/page_actions.py", line 1526, in click
2024-01-31 15:15:40     element.click()
2024-01-31 15:15:40   File "/usr/local/lib/python3.12/site-packages/selenium/webdriver/remote/webelement.py", line 93, in click
2024-01-31 15:15:40     self._execute(Command.CLICK_ELEMENT)
2024-01-31 15:15:40   File "/usr/local/lib/python3.12/site-packages/selenium/webdriver/remote/webelement.py", line 394, in _execute
2024-01-31 15:15:40     return self._parent.execute(command, params)
2024-01-31 15:15:40            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-01-31 15:15:40   File "/usr/local/lib/python3.12/site-packages/selenium/webdriver/remote/webdriver.py", line 347, in execute
2024-01-31 15:15:40     self.error_handler.check_response(response)
2024-01-31 15:15:40   File "/usr/local/lib/python3.12/site-packages/selenium/webdriver/remote/errorhandler.py", line 229, in check_response
2024-01-31 15:15:40     raise exception_class(message, screen, stacktrace)
2024-01-31 15:15:40 selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <button class="mt4 button button--fluid larger button--yellow" type="submit" id="login-btn" role="submit">...</button> is not clickable at point (712, 311). Other element would receive the click: <div class="backdrop visible active"></div>
2024-01-31 15:15:40   (Session info: chrome=117.0.5938.62)
2024-01-31 15:15:40

Additional context

No response

jdholtz commented 9 months ago

The traceback is fixed in the develop image already (so it throws the correct error). The underlying error is a 429, which is already being tracked in #201.