• 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 ВНИЗ.