2013-07-23 21 views
5

Używam selenu i PhantomJS do testowania. Zastosowałem proste użycie Selenium, ale send_keys nie działa na PhantomJS, działa w Firefoksie. Czemu? Muszę zamiast tego użyć button.click()?selenium PhantomJS send_keys nie działa

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

Odpowiedz

7

Podejrzewam, że to tylko kwestia czasu.

Selenium click() będzie czekać na załadowanie strony, jeśli zostanie przekierowane po kliknięciu, a send_key() nie czeka. (PhantomJS jest bez głowy, który jest szybszy niż Firefox)

Spróbuj dodać trochę snu jak time.sleep(5) po elem.send_keys(Keys.RETURN) przed print driver.title, i sprawdzić, czy można uzyskać wynik, który chcesz.

W rzeczywistym projekcie testowym wystarczy użyć WebDriverWait, aż driver.title będzie równa żądanej wartości.

+4

Po prostu napotkałem ten sam problem. Tak, to kwestia czasu, ale nadal Keys.RETURN nie działa dla mnie, potrzebowałem użyć Keys.ENTER. Mam pomysł z https://github.com/detro/ghostdriver/issues/249 –

Powiązane problemy