2014-10-13 4 views
-1

Я написал этот простой скрипт - он просто извлекает изображение из блога и отправляет его в Pinterest. Он отлично работает, за исключением того, что после примерно 43 страниц браузер зависает/зависает.Браузер сбоев на странице Извлечение петли, скрипт Selenium Python

Мне интересно, есть ли какая-то «утечка», из-за чего вещи выходят из-под контроля? Возможно, есть что-то, что я могу изменить в сценарии, чтобы он работал без сбоев?

Вот мой код:

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
import pickle 
import os.path 

import time 
driver = webdriver.Firefox() 

#START THE RACE 

driver.get("https://www.pinterest.com/login/") 
assert "Pinterest" in driver.title 

#name 
elem = driver.find_element_by_name("username_or_email") 
elem.send_keys("[email protected]") 

#pass 
elem = driver.find_element_by_name("password") 
elem.send_keys("12345") 

elem.send_keys(Keys.RETURN) 

time.sleep(5) 

new_url = 'something.com/something_else' 
driver.get(new_url) 
i=0 

while(1): 
    i=i+1 
    print i 

    time.sleep(5) 

    driver.find_element_by_css_selector(".pin-it-btn-wrapper a").click(); 

    time.sleep(3) 

    try: 
     driver.find_element_by_css_selector('[data-pin-index="0"]').click(); 
    except: 
     driver.find_element_by_css_selector("#prev_post a").click(); 

    time.sleep(3) 

    handles = driver.window_handles 

    if(handles): 
     for handle in handles: 
      driver.switch_to_window(handle) 
      try: 
       driver.find_element_by_css_selector('button.pinIt').click();     
       time.sleep(2) 

      except: 
       continue 

    time.sleep(3) 

    if(handles): 
     for handle in handles: 
      driver.switch_to_window(handle) 
      try: 
       time.sleep(1)  
       driver.find_element_by_css_selector("#prev_post a").click(); 
       time.sleep(3) 
       break 
      except: 
       continue 


#assert "No results found." not in driver.page_source 
#driver.close() 

Сценарий сам входит в Pinterest, идет на данном сайте, и начинает ползать «предыдущий пост» ссылки из постов блога - выталкивает «его Pin» кнопку, выбирает изображение, подтверждает (отдельное окно), затем переходит в главное окно и запускает другую страницу.

Как уже упоминалось, я думаю, что его возможная там есть «утечка», из-за чего она через какое-то время измельчается.

+0

Какие версии селена и firefox вы используете? – alecxe

+0

Кажется, это selenium-2.39.0, и последний firefox – 1Up

+0

Я уверен, что проблема заключается в нескольких вызовах 'sleep' - лучше использовать [selenium ждет] (http://selenium-python.readthedocs.org/ ru/latest/waits.html), но для начала обновите пакет selenium до последней версии (2.43. *, если я не ошибаюсь). – alecxe

ответ

0

За советом комментатора, в просто меняется каждый экземпляр:

time.sleep(3) 

в

driver.implicitly_wait(3) 

, кажется, помогли вещи. Также я обновился до последней версии.

+0

Вам просто нужно объявить его один раз ... и не нужно заменять когда-либо «time.sleep (3)» – Anuragh27crony

Смежные вопросы