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()