相关疑难解决方法(0)

带有selenium webdriver的鼠标滚轮,在没有滚动条的元素上?

我正在尝试驱动类似于Google地图的网络地图的一部分,其中放大/缩小是通过在鼠标悬停时滚动来完成的.理想情况下,我希望能够做到这样的事情:

someElement.scroll(-50)
Run Code Online (Sandbox Code Playgroud)

我在文档中看到的最接近的方法是clicksend_keys,但这些方法都没有滚动.我也尝试通过Javascript将卷轴发送到页面,例如,driver.execute_script("scroll(0,-50)")这似乎没有做任何事情.

我怎样才能做到这一点?

python selenium selenium-webdriver

10
推荐指数
1
解决办法
5139
查看次数

如何在更长的时间内“发送密钥”到画布元素?

我的目标:

我正在尝试制作一个 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_downkey_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和不滚动整个页面的情况下进行跳远......

python selenium canvas selenium-webdriver keyboard-python

6
推荐指数
1
解决办法
1008
查看次数