2013-07-23 12 views
5

私はテストにセレンとPhantomJSを使用しています。私はSeleniumのシンプルな使い方に従っていますが、send_keysはPhantomJSでは動作しません。これはFirefox上で動作します。どうして?代わりにbutton.click()を使用する必要がありますか?セレンPhantomJS send_keysが機能しません

#!/usr/bin/python 
# -*- coding: utf-8 -*- 
import sys 

reload(sys) 
sys.setdefaultencoding('utf-8') 
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 

driver = webdriver.PhantomJS() 

driver.get("http://www.python.org/") 
elem = driver.find_element_by_id("q") 
elem.clear() 
elem.send_keys("python") 
elem.send_keys(Keys.RETURN) 
# button = driver.find_element_by_id('submit') 
# button.click() 
print driver.title 
print driver.page_source 
driver.close() 

答えて

7

私はそれがちょうどタイミングの問題であると思われます。

Seleniumのclick()は、クリック後にリダイレクトされるとページが読み込まれるのを待ちますが、send_key()は待機しません。

print driver.title前に、elem.send_keys(Keys.RETURN)time.sleep(5)のようないくつかの睡眠を追加してみてください、とあなたが望む結果を得ることができるかどうかを確認してください(PhantomJSは、Firefoxよりも高速である、ヘッドレスです)。

実際のテストプロジェクトでは、driver.titleが必要な値になるまでWebDriverWaitを使用するだけです。

+4

同じ問題が発生しました。はい、それはタイミングの問題ですが、それでもKeys.RETURNは私のために働かなかったので、私はKeys.ENTERを使う必要がありました。私はhttps://github.com/detro/ghostdriver/issues/249からアイデアを得ました –

関連する問題