自动化Google足球2012

时间:2012-08-10 09:05:36

标签: canvas selenium watir watir-webdriver browser-automation

我正在尝试自动化Google Soccer 2012,只是为了好玩。我没有遇到任何问题automating other Google games

Soccer的问题在于它对leftright没有反应,但是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工作?

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

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

你太快地发送左右键。动画似乎没有检测到输入,直到动画完成。