Spaces:
Build error
Build error
Add different sleep so the simulated player dont get errors and plays smoothly
Browse files
rs_wordle_player/rs_wordle_player.py
CHANGED
|
@@ -29,17 +29,22 @@ def get_attempts(fb_connector):
|
|
| 29 |
return words, results
|
| 30 |
|
| 31 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
def play_game(player, fb_connector, env, model_path):
|
| 33 |
-
words = []
|
| 34 |
-
states = []
|
| 35 |
-
finished = False
|
| 36 |
attempts = 0
|
|
|
|
|
|
|
| 37 |
while not finished or attempts < 6:
|
| 38 |
attempts += 1
|
| 39 |
new_attempt = suggest(env, words, states, model_path)
|
| 40 |
player.play_word(new_attempt)
|
| 41 |
words, states = get_attempts(fb_connector)
|
| 42 |
-
finished = states
|
| 43 |
return words, finished
|
| 44 |
|
| 45 |
|
|
|
|
| 29 |
return words, results
|
| 30 |
|
| 31 |
|
| 32 |
+
def is_game_finished(states):
|
| 33 |
+
if states:
|
| 34 |
+
return states[-1] == '22222' or len(states) == 6
|
| 35 |
+
return False
|
| 36 |
+
|
| 37 |
+
|
| 38 |
def play_game(player, fb_connector, env, model_path):
|
|
|
|
|
|
|
|
|
|
| 39 |
attempts = 0
|
| 40 |
+
words, states = get_attempts(fb_connector)
|
| 41 |
+
finished = is_game_finished(states)
|
| 42 |
while not finished or attempts < 6:
|
| 43 |
attempts += 1
|
| 44 |
new_attempt = suggest(env, words, states, model_path)
|
| 45 |
player.play_word(new_attempt)
|
| 46 |
words, states = get_attempts(fb_connector)
|
| 47 |
+
finished = is_game_finished(states)
|
| 48 |
return words, finished
|
| 49 |
|
| 50 |
|
rs_wordle_player/selenium_player.py
CHANGED
|
@@ -2,6 +2,7 @@ import os
|
|
| 2 |
import time
|
| 3 |
from dotenv import load_dotenv
|
| 4 |
from selenium import webdriver
|
|
|
|
| 5 |
from selenium.webdriver.chrome.options import Options
|
| 6 |
from selenium.webdriver.common.by import By
|
| 7 |
from selenium.webdriver.common.keys import Keys
|
|
@@ -36,6 +37,7 @@ class SeleniumPlayer():
|
|
| 36 |
|
| 37 |
def log_in(self):
|
| 38 |
if not self.logged_in():
|
|
|
|
| 39 |
login_div = self.driver.find_element(By.CLASS_NAME, 'login-button')
|
| 40 |
login_btns = login_div.find_elements(By.TAG_NAME, 'button')
|
| 41 |
login_btn = login_btns[0]
|
|
@@ -52,15 +54,23 @@ class SeleniumPlayer():
|
|
| 52 |
element = self.driver.find_element(By.NAME, 'password')
|
| 53 |
element.send_keys(password)
|
| 54 |
element.send_keys(Keys.ENTER)
|
| 55 |
-
time.sleep(10)
|
| 56 |
self.driver.switch_to.window(wordle_window)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 57 |
|
| 58 |
def play_word(self, word):
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 64 |
|
| 65 |
def finish(self):
|
| 66 |
self.driver.quit()
|
|
|
|
| 2 |
import time
|
| 3 |
from dotenv import load_dotenv
|
| 4 |
from selenium import webdriver
|
| 5 |
+
from selenium.common.exceptions import UnexpectedAlertPresentException
|
| 6 |
from selenium.webdriver.chrome.options import Options
|
| 7 |
from selenium.webdriver.common.by import By
|
| 8 |
from selenium.webdriver.common.keys import Keys
|
|
|
|
| 37 |
|
| 38 |
def log_in(self):
|
| 39 |
if not self.logged_in():
|
| 40 |
+
time.sleep(2)
|
| 41 |
login_div = self.driver.find_element(By.CLASS_NAME, 'login-button')
|
| 42 |
login_btns = login_div.find_elements(By.TAG_NAME, 'button')
|
| 43 |
login_btn = login_btns[0]
|
|
|
|
| 54 |
element = self.driver.find_element(By.NAME, 'password')
|
| 55 |
element.send_keys(password)
|
| 56 |
element.send_keys(Keys.ENTER)
|
|
|
|
| 57 |
self.driver.switch_to.window(wordle_window)
|
| 58 |
+
time.sleep(5)
|
| 59 |
+
onboard_div = self.driver.find_element(By.CLASS_NAME, 'onboarding-modal-container')
|
| 60 |
+
onboard_btn = onboard_div.find_elements(By.TAG_NAME, 'button')
|
| 61 |
+
onboard_btn[-1].click()
|
| 62 |
+
|
| 63 |
|
| 64 |
def play_word(self, word):
|
| 65 |
+
try:
|
| 66 |
+
element = self.driver.find_element(By.TAG_NAME, 'html')
|
| 67 |
+
# simulate typing the letters in the word into the input field
|
| 68 |
+
element.send_keys(word)
|
| 69 |
+
# simulate pressing the Enter key
|
| 70 |
+
element.send_keys(Keys.ENTER)
|
| 71 |
+
time.sleep(5)
|
| 72 |
+
except UnexpectedAlertPresentException:
|
| 73 |
+
print('Won game alert on screen')
|
| 74 |
|
| 75 |
def finish(self):
|
| 76 |
self.driver.quit()
|