Есть задача (для себя) написать бот для просмотра видео на Перископе. Алгоритм: Вставляешь ссылку на трансляцию и даём значение переменной n = количество выполнений пунктов 3 и 4. Идёт проверка каждые "n" секунд наличие текста на сайте, если текст на сайте есть переходим к 3 пункту. Скрипт запускает на просмотр видео и одновременно пингует на наличие на сайте текста о завершение трансляции, после завершения трансляции, переходим к 4 пункту. Но тут возникают ошибки (основная запись): ConnectionRefusedError: [WinError 10061] Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение Думал что поможет исправить проблему увелечение интервала запросов на сайт, ставил ожидание 120 сек., не помогло. Сам код программы: from selenium import webdriver from selenium.common.exceptions import NoSuchElementException import time global n n = 0 global i i = 0 def getProfile(): profile = webdriver.FirefoxProfile() profile.set_preference("browser.privatebrowsing.autostart", True) return profile def work(driver): time.sleep(120) try: driver.find_element_by_id('video_swf_0') except NoSuchElementException: print('Такого элемента на сайте существует!') driver.close() time.sleep(120) work(driver) else: print('Такой элемент на сайте существует!') driver.close() time.sleep(120) works(driver) def works(driver): while (i<=n): time.sleep(120) driver = webdriver.Firefox(firefox_profile=getProfile()) driver.implicitly_wait(5) # seconds driver.get(url_t) time.sleep(120) try: driver.find_element_by_id('video_swf_0') except NoSuchElementException: print('Такого элемента на сайте существует!') driver.close() time.sleep(120) works(driver) else: print('Такой элемент на сайте существует!') i = i + 1 time.sleep(120) works_c(driver)<br>def works_c(driver): time.sleep(120) driver.implicitly_wait(5) driver.get(url_t) try: driver.find_element_by_id('video_swf_0') except NoSuchElementException: driver.close() time.sleep(120) works(driver) else: time.sleep(120) works_c(driver) def main(): url_t = input("Введи ссылку на трансляцию: ") n = int(input("Введи количество просмотров трансляции: ")) driver = webdriver.Firefox(firefox_profile=getProfile()) driver.implicitly_wait(5) # seconds driver.get(url_t) time.sleep(5) work(driver) if __name__ == '__main__': main()
Ответ На сколько я помню, thread.sleep принимает значение в миллисекундах. Тоесть, чтобы ожидать 120 секунд надо прописать 120000. НО принудительное ожидание это не правильно! Правильнее сделать примерно так: timeout = 120 while driver.find_element_by_id('video_swf_0') == null: if timeout > 0: thread.sleep(1000) timeout = timeout - 1 else: break