2

楽しみのために、 GoogleSoccer2012を自動化しようとしています。他のGoogleゲームの自動化に問題はありませんでした。

leftサッカーの問題は、サッカーがとに反応しないことですが、問題rightなく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て動作するかについてのアイデアを持っていますか?

4

2 に答える 2

1

矢印キーを何度も押すと、ゴールキーパーが少し動きます。

100.times{browser.send_keys :left}

そのため、矢印キーをタップするだけでなく、なんらかの方法で押し続ける必要があると思います。残念ながら、キーを押したままにする方法が見つかりませんでした(selenium-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)
于 2012-08-10T14:47:10.233 に答える
0
sleep 3
puts "Left!"
browser.send_keys :left

左右のキーの送信が速すぎます。アニメーションが終了するまで、アニメーションは入力を検出しないようです。

于 2012-08-10T09:24:58.217 に答える