Spaces:
Build error
Build error
| import os | |
| import time | |
| from dotenv import load_dotenv | |
| from selenium import webdriver | |
| from selenium.common.exceptions import UnexpectedAlertPresentException | |
| from selenium.webdriver.chrome.options import Options | |
| from selenium.webdriver.common.by import By | |
| from selenium.webdriver.common.keys import Keys | |
| class SeleniumPlayer: | |
| def __init__(self): | |
| self.wordle_url = self.get_wordle_url() | |
| self.driver = self.get_driver() | |
| self.log_in() | |
| def get_driver(self): | |
| chrome_options = Options() | |
| chrome_options.add_experimental_option("detach", True) | |
| driver = webdriver.Chrome(options=chrome_options) | |
| driver.get(self.wordle_url) | |
| return driver | |
| def get_wordle_url(self): | |
| load_dotenv() | |
| return os.getenv("RS_WORDLE_URL") | |
| def get_credentials(self): | |
| load_dotenv() | |
| username = os.getenv("RS_WORDLE_USER") | |
| password = os.getenv("RS_WORDLE_PASSWORD") | |
| return username, password | |
| def logged_in(self): | |
| return self.driver.current_url != self.wordle_url + "/login" | |
| def log_in(self): | |
| if not self.logged_in(): | |
| time.sleep(2) | |
| login_div = self.driver.find_element(By.CLASS_NAME, "login-button") | |
| login_btns = login_div.find_elements(By.TAG_NAME, "button") | |
| login_btn = login_btns[0] | |
| login_btn.click() | |
| time.sleep(10) | |
| wordle_window = self.driver.window_handles[0] | |
| login_window = self.driver.window_handles[1] | |
| self.driver.switch_to.window(login_window) | |
| username, password = self.get_credentials() | |
| element = self.driver.find_element(By.ID, "identifierId") | |
| element.send_keys(username) | |
| element.send_keys(Keys.ENTER) | |
| time.sleep(10) | |
| element = self.driver.find_element(By.NAME, "password") | |
| element.send_keys(password) | |
| element.send_keys(Keys.ENTER) | |
| self.driver.switch_to.window(wordle_window) | |
| time.sleep(5) | |
| onboard_div = self.driver.find_element( | |
| By.CLASS_NAME, "onboarding-modal-container" | |
| ) | |
| onboard_btn = onboard_div.find_elements(By.TAG_NAME, "button") | |
| onboard_btn[-1].click() | |
| def play_word(self, word): | |
| try: | |
| element = self.driver.find_element(By.TAG_NAME, "html") | |
| # simulate typing the letters in the word into the input field | |
| element.send_keys(word) | |
| # simulate pressing the Enter key | |
| element.send_keys(Keys.ENTER) | |
| time.sleep(5) | |
| except UnexpectedAlertPresentException: | |
| print("Won game alert on screen") | |
| def finish(self): | |
| self.driver.quit() | |