2017-05-17 19 views
2

Phaserを使用して作成したHTML5ゲームにSeleniumを使用してキー入力を送信しようとしています。しかし、なぜ私はそれを働かせることができないのか困惑しています。 2048やGoogle、Pythonなどの他のウェブサイトで試してみると同じコードが動作します(ただし、phaserで構築された他のHTML5ゲームでは使用できません)。任意のヒントやポインタが非常に便利です! Pythonコードの下Seleniumを使用してHTML5ゲームにキー入力を送信

import time 
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.common.action_chains import ActionChains 
driver = webdriver.Firefox() 
driver.get("https://dry-anchorage-61733.herokuapp.com/") #this is game link 
#driver.get("https://gabrielecirulli.github.io/2048/") #works for 2048 
actions = ActionChains(driver) 
for _ in range(6): 
    actions.send_keys(Keys.ARROW_UP).perform() 
    time.sleep(1) 
    actions.send_keys(Keys.ARROW_LEFT).perform() 
    time.sleep(1) 

答えて

1

アプリに焦点を当てていないセレンのように見えます。
これは私のために働いた送信キー

element = driver.find_element_by_tag_name("canvas") 
actions.click(element).key_down(Keys.ARROW_LEFT).perform() 

を持つ要素とチェーン上でクリックしてみてください

+0

私は十分に感謝することはできません - 私は私のゲームのために働くためにセレンを取得しようと多くの時間を費やし、それは最終的に動作します。私の心の底から深い感謝!!!! –

+0

Btw、好奇心から - send_keysとkey_downの違いは?キャンバスをクリックした後でも、send_keysメソッドは機能しませんが、key_downメソッドが機能します。 –

+0

'key_down'はキーを押すだけの事象を誘発します(キーボードのキーを押して保持するのと同じように) ' send_keys'は、key_downとkey_upの両方を連続して起動する必要があります。なぜ私はそれが動作しないだろうか分からない –

関連する問題