Движение вниз только при автоматическом воспроизведении 2048 с Selenium - PullRequest
0 голосов
/ 01 августа 2020
• 1000 код:
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
import time, requests

browser.get('https://play2048.co/')

time.sleep(2)

game = browser.find_element_by_tag_name('body')
over = browser.find_element_by_class_name('retry-button')
control = ['Keys.UP','Keys.RIGHT','Keys.DOWN','Keys.LEFT']

act = 0

while True:
     if over.is_displayed() is False:
         if act == 4:
             act = 0
         game.send_keys(control[act])
         print('act=' + str(act) + ' control =' + control[act])  # To check every move output.
         act += 1
         time.sleep(0.1)

     else:
          print('Done')
          time.sleep(2)
          over.click()             

Аргумент, отправляемый в game.send_keys (), отличается для каждого хода (ВВЕРХ> ВПРАВО> ВНИЗ> ВЛЕВО> ВВЕРХ).

Но фактические результаты в игра всегда движется ВНИЗ каждый раз.

После нескольких попыток я изменил "control" dict на:

control = ['\ue013','\ue014','\ue015','\ue012']

И проблема решена ...

I мне просто интересно, что приводит к проблеме, и почему она всегда движется ВНИЗ, поскольку все аргументы разные.

Спасибо, ребята.

-------------- ------------------- Редактировать ------------------------------ ---

Проблема здесь в том, что я отправляю в send_keys () строки, а не ключи, как ответил Иэн Шелвингтон (спасибо, дружище).

И почему игра всегда откатывается?

Поскольку 2048 также можно было управлять с помощью W, D, S, A вместо UP, ВЛЕВО, ВНИЗ и ВПРАВО, поэтому игра будет получать команды из строки 'Keys.UP' буква за буквой.

'K', 'e' и 'y' ничего не значат для игры, но 's' сделает блоки go ВНИЗ.

Следовательно, все строки начинаются с 'ключей'. перенаправит игру на go ВНИЗ.

...