Моя цель:
Я пытаюсь создать python бота, чтобы выиграть игру chrome .
Игра допускает 2 типа прыжков:
- короткие прыжки
- длинные прыжки
Использование main_body.send_keys(Keys.SPACE)
(как показано в коде ниже) дает короткие прыжки.
Моя проблема:
У меня проблемы с выполнением длинных прыжков.
Мой подход:
В настоящее время для прыжков в длину я использую библиотеку Keyboard
:
keyboard.press(keyboard.KEY_UP)
Это, к сожалению, требует, чтобы браузер windows был все время в фокусе. Позже я sh запустил эту программу без подключения к голове, поэтому этот подход не сработает.
В качестве альтернативы:
Я пробовал ActionChains
:
ActionChains(driver) \
.key_down(Keys.SPACE) \
.pause(0.2) \
.key_up(Keys.SPACE) \
.perform()
Но это заканчивается прокруткой всей страницы. И не выполняет намеченную цель.
Я просто sh «отправляю» эти действия непосредственно элементу холста, вместо того, чтобы выполнять их на всей странице ...
Я sh, чтобы сделать что-то вроде этого :
main_body.key_down(Keys.SPACE)
time.sleep(0.2)
main_body.key_up(Keys.SPACE)
Хотя это, конечно, даст мне эту ошибку: AttributeError: 'FirefoxWebElement' object has no attribute 'key_down'
потому что canvas
не имеет атрибутов key_down
или key_up
.
Вот MCVE:
ПРИМЕЧАНИЕ : В коде динозавр будет продолжать прыгать, но не в этом суть, это просто для того, чтобы проверить высоту прыжков, а не для победы в игре. код для других.
Если возможно, предложите другой альтернативный способ сделать прыжок в длину без использования Keyboard
и без прокрутки всей страницы ...