我的目标:
我正在尝试制作一个 python 机器人来赢得chrome 的恐龙游戏。
游戏允许两种类型的跳跃:
使用main_body.send_keys(Keys.SPACE)(如下面的代码所示)给出了短跳转。
我的问题:
我很难执行跳远。
我的做法:
目前,对于跳远,我正在使用该Keyboard库:
keyboard.press(keyboard.KEY_UP)
不幸的是,这要求浏览器窗口始终处于焦点。稍后,我希望无头地运行这个程序,所以这种方法行不通。
或者:
我试过ActionChains:
ActionChains(driver) \
.key_down(Keys.SPACE) \
.pause(0.2) \
.key_up(Keys.SPACE) \
.perform()
Run Code Online (Sandbox Code Playgroud)
但这最终会滚动整个页面。并且没有达到预期的目的。
我只是希望直接将这些操作“发送”到画布元素,而不是在整个页面上执行它们...
我希望做这样的事情:
main_body.key_down(Keys.SPACE)
time.sleep(0.2)
main_body.key_up(Keys.SPACE)
Run Code Online (Sandbox Code Playgroud)
虽然这当然会给我这个错误:AttributeError: 'FirefoxWebElement' object has no attribute 'key_down'因为canvas没有属性key_down或key_up.
这是一个 MCVE:
注意: 在代码中,恐龙会不断跳跃,但这不是重点,这只是为了检查跳跃的高度而不是赢得比赛。
main_body.key_down(Keys.SPACE)
time.sleep(0.2)
main_body.key_up(Keys.SPACE)
Run Code Online (Sandbox Code Playgroud)
请给别人注释掉代码,看看每种跳转的效果。
如果可能的话,建议一些其他的替代方法,在不使用Keyboard和不滚动整个页面的情况下进行跳远......
我正在编写代码,以在输入特定的数字字符串时提醒用户。该代码运行似乎按预期运行,但应给我“ 12345”时输出“ 1122334455”:
import sys
sys.path.append('..')
import keyboard
line = ''
ISBN10 = ''
number = ""
def print_pressed_keys(e):
global line, ISBN10, number
line = line.join(str(code) for code in keyboard._pressed_events)
if line == "2":
number = 1
elif line == "3":
number = 2
elif line == "4":
number = 3
elif line == "5":
number = 4
elif line == "6":
number = 5
elif line == "7":
number = 6
elif line == "8":
number = 7
elif …Run Code Online (Sandbox Code Playgroud)