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