The [project outline][1]: > 2048 is a simple game where you combine tiles by sliding them up, > down, left, or right with the arrow keys. You can actually get a > fairly high score by repeatedly sliding in an up, right, down, and > left pattern over and over again. Write a program that will open the > game at https://gabrielecirulli.github.io/2048/ and keep sending up, > right, down, and left keystrokes to automatically play the game. My solution: from selenium import webdriver from selenium.webdriver.firefox.options import Options from selenium.webdriver.firefox.service import Service from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys import time def main(): service = Service(r"C:\Program Files\WebDrivers\geckdriver\geckodriver.exe") options = Options() options.binary_location = r"C:\Program Files\Mozilla Firefox\firefox.exe" driver = webdriver.Firefox(service=service, options=options) driver.get("https://gabrielecirulli.github.io/2048/") try: cookie_elem = driver.find_element(By. XPATH, '//*[@id="ez-accept-all"]') html_elem = driver.find_element(By.TAG_NAME, "html") except: print("Was not able to find an element with that name.") cookie_elem.click() time.sleep(1) while True: html_elem.send_keys(Keys.UP) time.sleep(0.1) html_elem.send_keys(Keys.RIGHT) time.sleep(0.1) html_elem.send_keys(Keys.DOWN) time.sleep(0.1) html_elem.send_keys(Keys.LEFT) time.sleep(0.1) if __name__ == '__main__': main() It works, but I couldn't figure out how to make the program end on the game over screen, though the outline doesn't specify to do this and the chapter didn't go in-depth into selenium so I'm not sure what the author had in mind. [1]: https://automatetheboringstuff.com/2e/chapter12/