5

テストにはセレンと PhantomJS を使用しています。Selenium の簡単な使い方に従いましたが、send_keys は PhantomJS では機能せず、Firefox では機能します。なんで?button.click()代わりに使用する必要がありますか?

#!/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()
4

1 に答える 1

7

私はそれが単にタイミングの問題であると強く疑っています。

Seleniumclick()は、クリック後にリダイレクトされた場合、ページが読み込まれるのを待ちますが、send_key()待ちません。(PhantomJS はヘッドレスで、Firefox より高速です)

time.sleep(5)after elem.send_keys(Keys.RETURN)、 beforeのようにスリープを追加してみてprint driver.title、希望する結果が得られるかどうかを確認してください。

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

于 2013-07-23T02:55:49.183 に答える