Я написал этот простой скрипт - он просто извлекает изображение из блога и отправляет его в 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» кнопку, выбирает изображение, подтверждает (отдельное окно), затем переходит в главное окно и запускает другую страницу.
Как уже упоминалось, я думаю, что его возможная там есть «утечка», из-за чего она через какое-то время измельчается.
Какие версии селена и firefox вы используете? – alecxe
Кажется, это selenium-2.39.0, и последний firefox – 1Up
Я уверен, что проблема заключается в нескольких вызовах 'sleep' - лучше использовать [selenium ждет] (http://selenium-python.readthedocs.org/ ru/latest/waits.html), но для начала обновите пакет selenium до последней версии (2.43. *, если я не ошибаюсь). – alecxe