문제

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)

다른 팁

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

you send the left and right keys too quickly. The animation doesn't seem to detect the input untill the animation has finished.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top