2014-04-22 6 views
11

Firefox'tan bir web sayfasının console.log çıktısını python Selenium API bağlamaları üzerinden almaya çalışıyorum.Selenyum ile Firefox'tan console.log çıkışı alma

from selenium import webdriver 
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 
d = DesiredCapabilities.FIREFOX 
d['loggingPrefs'] = { 'browser':'ALL' } 
fp = webdriver.FirefoxProfile() 
fp.set_preference('webdriver.log.file', '/tmp/firefox_console') 
driver = webdriver.Firefox(capabilities=d,firefox_profile=fp) 
driver.set_window_size(1280,1024) 
driver.get('http://foo.com') 
try: 
    WebDriverWait(driver,10).until(lambda driver: driver.execute_script("return document.readyState") == "complete") 
    for entry in driver.get_log('browser'): 
     print entry 
finally: 
    driver.quit() 

Ama console.log("foo") çağırsa bile basit bir örnek sayfa için, ben de günlük girdilerinde "foo" görmüyorum API üzerinden veya iade: code for Chrome ve bazı advice from the documentation dayanarak, aşağıdaki çalıştı /tmp/firefox_console dosyası. Yanlış bir şey mi yapıyorum? Yoksa bu bir Selenyum sınırlaması mı? o get_log fonksiyonuna gelince

+1

Bu cevaplarını kontrol etmek şimdi geliyor insanlar içindir. Bu tarih itibariyle firefox için driver.get_log ('browser') çalışmıyor. Açık bir sorun var https://github.com/SeleniumHQ/selenium/issues/1161 – Rajesh

cevap

6

Kodunuz doğruysa, sadece bu yüzden gibi sonunda bir print deyimi ekleyin: Aslında

from selenium import webdriver 
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 

# enable browser logging 
d = DesiredCapabilities.FIREFOX 
d['loggingPrefs'] = {'browser': 'ALL'} 
driver = webdriver.Firefox(capabilities=d) 
# load some site 
driver.get('http://foo.com') 
# print messages 
for entry in driver.get_log('browser'): 
    print entry 

print 

driver.quit() 

:

print len(driver.get_log('browser')) 

döner 53 ile benim örnekte Bu listede bir örnek giriş olarak:

{u'timestamp': 1407591650751, u'message': u"Expected ':' but found '}'. Declaration dropped.", u'level': u'WARNING'} 

Kötü bir char problemi gibi görünüyor. /tmp/firefox_console dosyasında neden çıktı yok gibi, ben hiçbir ipucu yok, logger bazı webdriver hata ayıklama bilgileri atmak ama console.log çıkış yok gibi görünüyor.

EDIT: Görünüşe göre yukarıdaki kod console.log'dan veri döndürmemektedir. Anladığım kadarıyla bir Firefox ile ilgili bir sorun değil. Firebug için Firebug ile birlikte ConsoleExport eklentisini kurarak etrafta dolaşmayı başardım, sonra bir kayıt sunucusuna yöneltin. Firebug'un programatik olarak Selenium'dan nasıl etkinleştirileceğine dair ayrıntılar için ayrıca bkz. this SO answer.

fazla ayrıntı için bu özünü bakınız: https://gist.github.com/CGenie/fc63536a8467ae6ef945

+0

Sürücüden günlük çıkışı almıyorum demiyorum, sadece 'konsol.log' çıktısını almadım . Sürücü günlüğü girdilerinde 'console.log' çıktısını görüyor musunuz? – msridhar

+1

Görünmeyen istisnalar ve sözdizimi hataları SEVERE olarak kaydedilmiş gibi görünüyor. Bu, otomatik testlerle JS hatalarını yakalamak için umut verici görünüyor. –