我正在尝试自动化Google Soccer 2012,只是为了好玩。我没有遇到任何问题automating other Google games。
Soccer的问题在于它对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
查看足球和其他游戏的代码任何人都知道如何让left
和right
工作?
答案 0 :(得分: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)
答案 1 :(得分:0)
sleep 3
puts "Left!"
browser.send_keys :left
你太快地发送左右键。动画似乎没有检测到输入,直到动画完成。