I am trying to automate Google Soccer 2012, just for fun. I did not have any problems automating other Google games.
The problem with Soccer is that it does not react to left
and right
, but space
works just fine.
This is the entire script:
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
You can see code for Soccer and other games at https://github.com/zeljkofilipin/olympics
Anybody has an idea how to get left
and right
working?
The goalie kind of moves a little if you hit the arrow key many times:
100.times{browser.send_keys :left}
Which makes me think that you need to some how hold down the arrow key rather than just tapping it. Unfortunately I could not find a way to hold keys down (the selenium-webdriver action builder key_down seems to only allow control keys).
If you are okay with not using the keyboard, the goalie seems to respond well to the mouse:
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)