2013-07-23 13 views
5

Sto usando selenio e PhantomJS per il test. Ho seguito il semplice utilizzo di Selenium, ma send_keys non funziona su PhantomJS, funziona su Firefox. Perché? Devo usare button.click() invece?selenio PhantomJS send_keys non funziona

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

risposta

7

Ho il sospetto che sia solo un problema di temporizzazione.

Selenium's click() attenderà il caricamento della pagina se viene reindirizzata dopo aver fatto clic, mentre send_key() non attende. (PhantomJS è senza testa, che è più veloce di Firefox)

Prova aggiungere un po 'di sonno, come time.sleep(5) dopo elem.send_keys(Keys.RETURN), prima print driver.title, e vedere se è possibile ottenere il risultato desiderato.

Nel progetto di test reale, è sufficiente utilizzare WebDriverWait fino a driver.title uguale al valore desiderato.

+4

Ho appena incontrato lo stesso problema. Sì, è un problema di temporizzazione, ma ancora Keys.RETURN non ha funzionato per me, avevo bisogno di usare Keys.ENTER. Ho avuto l'idea da https://github.com/detro/ghostdriver/issues/249 –

Problemi correlati