2012-08-10 130 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