Я пытаюсь посмотреть несколько страниц на одном веб-сайте с Selenium - PhantomJS()
. Проблема в том, что она замерзала, и я не могу понять, почему. Вероятно, это что-то с тайм-аутом.Selenium WebDriverWait не работает должным образом?
Это __init__
метод класса.
self.driver = webdriver.PhantomJS(service_args=["--load-images=false"])
self.wait = WebDriverWait(self.driver, 2)
А вот метод:
def click_next_page(self):
log('click_next_page : '+self.driver.current_url) # THIS LINE RUNS
rep = 0
while 1:
try:
self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, 'li.arr-rgt.active a'))) # IT MAY FREEZE HERE
self.driver.find_element_by_css_selector('li.arr-rgt.active a').click()# IT MAY FREEZE HERE
print 'NEXT' # DOESNT PRINT ANY TEXT SO THIS LINE NOT EXECUTED
log('NEXT PAGE')
return True
except Exception as e:
log('click next page EXCEPTION') # DONT HAVE THIS TEXT IN MY LOG SO IT DOES NOT RAISES ANY EXCEPTION
self.driver.save_screenshot('click_next_page_exception.png')
self.driver.back()
self.driver.forward()
rep += 1
log('REPEAT '+str(rep))
if rep>4:
break
sleep(4)
return False
Проблема заключается в том, что она не вызывает каких-либо исключений или любое сообщение. Линия log('click_next_page : '+self.driver.current_url)
работает, а затем она зависает, я ее знаю, потому что у меня есть click_next_page : http://....
в моем журнале как последняя строка.
Проблема, безусловно, где-то здесь:
self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, 'li.arr-rgt.active a')))
self.driver.find_element_by_css_selector('li.arr-rgt.active a').click()
Но я не могу понять, где, потому что это не вызывает каких-либо исключений.
Не могли бы вы дать мне совет?
довольно уверен, что вы имеете в виду time.sleep (5), а не time.slee (5) – patricmj
Да ... это time.sleep() ... Извините за типографию ... –