2015-08-07 8 views
5

Ładowanie strony za pomocą sterownika sieci web selen. Ale strona ładuje się w nieskończoność. Próbowałem wychwycić wyjątek i zasymulować działanie klawisza esc, ale to nie pomogło. Do niektórych ograniczeń mogę używać tylko Firefoxa [widziałem chromowany dodatek na rozwiązanie]. Kiedy trafiam na stronę, nie otrzymuję kontroli.Zatrzymaj nieskończone ładowanie strony w selenowym webdriverze - python

ustawić swój profil Firefoksa jako

firefoxProfile = FirefoxProfile() 
    firefoxProfile.set_preference('permissions.default.stylesheet', 2) 
    firefoxProfile.set_preference('permissions.default.image', 2) 
    firefoxProfile.set_preference('dom.ipc.plugins.enabled.libflashplayer.so','false') 
    firefoxProfile.set_preference("http.response.timeout", 10) 
    firefoxProfile.set_preference("dom.max_script_run_time", 10) 

Script przestać ładowania:

try: 
     driver.set_page_load_timeout(10) 
     driver.get('http://www.example.com'  
except Exception 
     print 'time out' 
     driver.send_keys(Keys.CONTROL +'Escape') 
+0

Czy możesz udostępnić rzeczywisty adres URL, którego używasz? – alecxe

+0

To jest mój projekt firmowy, więc nie mogę publicznie udostępnić adresu URL. To spowoduje niepotrzebne problemy. –

+0

Okay, rozumiem, w ogóle nie ustawiłbyś preferencji profilu? Czy wciąż trwa ładowanie na zawsze? Czy próbowałeś czekać 30 sekund? – alecxe

Odpowiedz

2

widzę parę literówek w próbie/z wyjątkiem bloku, więc niech to skorygować te bardzo szybko ..

try: 
     driver.set_page_load_timeout(10) 
     driver.get('http://www.example.com') 
except Exception: 
     print 'time out' 
     driver.send_keys(Keys.CONTROL +'Escape') 

Od jakiegoś czasu pracuję z Selenium i Pythonem (również przy użyciu przeglądarki Firefox). Ponadto zakładam, że używasz Pythona, tylko ze składni twojego kodu.

W każdym razie Twój profil Firefoksa powinien pomóc w rozwiązaniu problemu, ale nie wygląda na to, że faktycznie stosujesz go do instancji instancji.

spróbować czegoś wzdłuż tych linii:

from selenium import webdriver # import webdriver to create FirefoxProfile 

firefoxProfile = webdriver.FirefoxProfile() 
firefoxProfile.set_preference('permissions.default.stylesheet', 2) 
firefoxProfile.set_preference('permissions.default.image', 2) 
firefoxProfile.set_preference('dom.ipc.plugins.enabled.libflashplayer.so','false') 
firefoxProfile.set_preference("http.response.timeout", 10) 
firefoxProfile.set_preference("dom.max_script_run_time", 10) 

# now create browser instance and APPLY the FirefoxProfile 
driver = webdriver.Firefox(firefox_profile=firefoxProfile) 

To działa na mnie, używając Pythona 2.7 i selen 2,46.

Źródło (Selen docs): http://selenium-python.readthedocs.org/en/latest/faq.html#how-to-auto-save-files-using-custom-firefox-profile (w dół odrobinę aż zobaczysz blok kodu pod „Oto przykład:”)

Daj mi znać, jak to działa, i powodzenia!

+0

Witam, dziękuję za sugestię. Problem został już naprawiony przez zastosowanie xpath w bloku wyjątków, o czym wspomniałem wcześniej w moim komentarzu –

+1

Pewnie. Wciąż sugeruję dodanie, że jedna linia kodu 'driver = webdriver.Firefox (firefox_profile = firefoxProfile)' tak, że twój kod firefoxProfile jest faktycznie używany, ponieważ teraz, to nie jest – Bryce

Powiązane problemy