2012-08-10 101 views
2

我試圖自動化Google Soccer 2012,只是爲了好玩。我沒有任何問題automating other Google games自動化Google足球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 

您可以在https://github.com/zeljkofilipin/olympics

任何人看到足球和其他遊戲代碼中有一個想法如何讓leftright工作?

回答

1

守門員一種移動一點點,如果你打箭頭鍵多次:

100.times{browser.send_keys :left} 

這讓我覺得,你需要一些如何按住方向鍵,而不僅僅是點擊它。不幸的是,我找不到一種方法來保存鍵(selenium-webdriver action builder 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

用鼠標移動守門員是一個很好的解決方法! :) – 2012-08-11 09:33:29

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

您發送的左右鍵太快。動畫似乎沒有檢測到輸入,直到動畫完成。

+0

我不認爲這是問題。我等待10-20秒後嘗試從IRB發送左/右,但沒有奏效。當你增加睡眠時是否爲你發送左/右工作? – 2012-08-10 10:16:24

+0

是的,它確實...當我有它1沒有工作,3工作。 :/ – Simon 2012-08-10 10:27:56

+0

現在就試試。 – 2012-08-10 10:46:28