2

我正在尝试自动化Google Soccer 2012,只是为了好玩。我在自动化其他 Google 游戏时没有任何问题。

leftSoccer 的问题在于它对and没有反应right,但space工作得很好。

这是整个脚本:

puts "Go to game."
require "bundler/setup"
require "watir-webdriver"
browser = Watir::Browser.new :chrome
browser.goto "https://www.google.com/doodles/soccer-2012"

sleep 1
puts "Go!"
browser.div(id: "hplogo").frame.div.click

sleep 1
puts "Left!"
browser.send_keys :left

sleep 1
puts "Rigth!"
browser.send_keys :right

sleep 1
puts "Space!"
browser.send_keys :space

您可以在https://github.com/zeljkofilipin/olympics查看足球和其他游戏的代码

有人知道如何获得leftright工作吗?

4

2 回答 2

1

如果您多次按箭头键,守门员会稍微移动:

100.times{browser.send_keys :left}

这让我觉得你需要一些如何按住箭头键而不是点击它。不幸的是,我找不到按住键的方法(selenium-webdriver 操作生成器 key_down 似乎只允许控制键)。

如果您可以不使用键盘,那么守门员似乎对鼠标反应良好:

def move(browser, direction)
    el = browser.driver.find_element(:id, 'hplogo')
    case direction
        when :start
            browser.driver.action.move_to(el).perform
        when :left
            browser.driver.action.move_by(-1, 0).perform
        when :left_fast
            browser.driver.action.move_by(-5, 0).perform            
        when :right
            browser.driver.action.move_by(1, 0).perform
        when :right_fast
            browser.driver.action.move_by(5, 0).perform         
        when :jump
            browser.send_keys :space
    end
end

puts "Go to game."
require "watir-webdriver"
browser = Watir::Browser.new :chrome
browser.goto "https://www.google.com/doodles/soccer-2012"

sleep 1
puts "Go!"
browser.div(id: "hplogo").frame.div.click
move(browser, :start) #Centre mouse

sleep 1
puts "Left!"
80.times{move(browser, :left)}

sleep 1
puts "Right!"
10.times{move(browser, :right_fast)}

sleep 1
puts "Space!"
move(browser, :jump)
于 2012-08-10T14:47:10.233 回答
0
sleep 3
puts "Left!"
browser.send_keys :left

你发送左右键太快了。在动画完成之前,动画似乎没有检测到输入。

于 2012-08-10T09:24:58.217 回答