2013-07-23 132 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

我高度懷疑它只是時間問題。

硒的click()將等待頁面加載,如果它點擊後重定向,而send_key()不等待。 (PhantomJS是無頭,比火狐快)

請嘗試添加一些睡眠就像time.sleep(5)elem.send_keys(Keys.RETURN)後,print driver.title之前,看看你能得到你想要的結果。

在真正的測試項目中,您只需使用WebDriverWait,直到driver.title等於您想要的值。

+4

我剛剛遇到同樣的問題。是的,這是一個計時問題,但仍然Keys.RETURN沒有爲我工作,我需要使用Keys.ENTER。我從https://github.com/detro/ghostdriver/issues/249獲得了這個想法 –