2013-07-23 24 views
5

Test için selenyum ve PhantomJS kullanıyorum. Selenium'un basit kullanımını takip ettim, ancak send_keys PhantomJS üzerinde çalışmıyor, Firefox'ta çalışıyor. Niye ya? Bunun yerine button.click() kullanmalı mıyım?selenium PhantomJS send_keys çalışmıyor

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

cevap

7

Sadece zamanlama sorunu olduğundan şüpheleniyorum. beklemediğinde sayfanın yüklenmesini sağladıktan sonra sayfanın yüklenmesini bekler.

Selenium click()

print driver.title önce elem.send_keys(Keys.RETURN) sonra time.sleep(5) gibi bazı uyku eklemek deneyin ve istediğiniz sonucu elde edebilirsiniz eğer bakınız (PhantomJS Firefox daha hızlı olan başsız olan).

Gerçek test projesinde, WebDriverWait'i yalnızca driver.title istediğiniz değere eşit olarak kullanmanız gerekir.

+4

Sadece aynı sorunla karşılaştım. Evet, bu bir zamanlama meselesi, ama yine de Keys.RETURN benim için çalışmadı, Keys.ENTER'ı kullanmam gerekiyordu. Bu fikri https://github.com/detro/ghostdriver/issues/249 adresinden aldım. –

İlgili konular