Spaces:
Sleeping
Sleeping
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() | |