2012-08-10 5 views
2

재미만을 위해서 Google Soccer 2012을 자동화하려고합니다. 나는 어떤 문제도 없었습니다 automating other Google games.Google Soccer 2012 자동화

축구와 관련된 문제는 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 

당신은 아이디어가 어떻게 leftright이 작업을 얻을 수있다 https://github.com/zeljkofilipin/olympics

누구에 축구 및 기타 게임 코드를 볼 수 있습니까?

답변

1

은 골키퍼 가지 조금 이동합니다. 불행히도 키를 누르고있는 방법을 찾지 못했습니다 (셀레늄 - 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) 
+0

마우스로 골키퍼를 옮기는 것이 좋습니다! :) –

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

너무 빨리 왼쪽 및 오른쪽 키를 보냅니다. 애니메이션은 애니메이션이 끝날 때까지 입력을 감지하지 못합니다. 내가 당신이 그냥 눌러보다는 화살표 키를 누른 상태에서 어떻게 일부 필요가 있다고 생각합니다

100.times{browser.send_keys :left} 

: 당신은 화살표 키를 여러 번 치면

+0

나는 그게 문제라고 생각하지 않습니다. 10 ~ 20 초를 기다린 후 IRB에서 왼쪽/오른쪽으로 전송을 시도했지만 작동하지 않았습니다. 잠을 자면 왼쪽/오른쪽을 보내는 것이 효과가 있습니까? –

+0

네, 그렇습니다 ... 1 일에 작동하지 않았을 때 3 일에 작동했습니다. :/ – Simon

+0

지금 시도해보십시오. –