Python Selenium WebDriver разлогирование каждые 3 часа
Помогите разобраться, произвожу парсинг СРМ на наличие новых задач. Все работает нормально и пуши летят в телеграмм бот, но через каждые 3 часа происходит разлогирование. Мне пока не удалось понять почему это происходит.Подскажи возможно кто то с таким сталкивался? Есть идея написать метод на проверку разлогирование страницы но это костыльный вариант решения проблемы. Так же буду рад если дадите рекомендации по проблеме и по коду в целом. Спасибо.
options = webdriver.ChromeOptions()
options.add_argument(arg)
# disable webdriver mode
options.add_argument("--disable-blink-features=AutomationControlled")
# headless mode
# options.headless = True
pathDriver = Service(pathDriverChrome)
driver = webdriver.Chrome(service=pathDriver, options=options)
sec_utc = time.time()
log_path = PathManager.get('logs/debugCRM.log')
logger.add(log_path, format="{time} {level} {message}", level="DEBUG", rotation="10:00", compression="zip")
try:
driver.get(url)
time.sleep(1)
# Find the id/name/class of username by inspecting on username input
driver.find_element(By.NAME, "USER_LOGIN").send_keys(setting.bots.login)
logger.info('Логин введен')
time.sleep(1)
# find the password by inspecting on password input
driver.find_element(By.NAME, "USER_PASSWORD").send_keys(setting.bots.password)
logger.info('Пароль введен')
time.sleep(1)
# Send_Key_Enter
driver.find_element(By.NAME, "USER_PASSWORD").send_keys(Keys.ENTER)
logger.info('Пользователь авторизован')
time.sleep(1)
except Exception as ex:
logger.info(ex)
def checkFormCall():
try:
elem = driver.find_element(By.XPATH, '//*[@id="popup-window-content-im-phone-call-view"]/div/div[2]/div/div[7]/span')
elem.click()
logger.info('Форма вызова была закрыта')
except NoSuchElementException:
logger.info('Форма вызова на странице не найдена')
return False
@logger.catch
def parsPage():
for k, v in data.items():
logger.info('*****************START*****************')
logger.info('Итерация словаря начата')
checkFormCall()
try:
checkFormCall()
driver.find_element(By.PARTIAL_LINK_TEXT, "Сделки").click()
time.sleep(1)
logger.info('Переход в сделки')
time.sleep(2)
checkFormCall()
logger.info(f'Выбираем из списка фильтр пользователя: {k}')
driver.find_element(By.ID, "CRM_DEAL_LIST_V12_C_0_search").click()
time.sleep(1)
logger.info('Нажимаем на поиск')
time.sleep(2)
checkFormCall()
driver.find_element(By.XPATH, v).click()
time.sleep(1)
logger.info('Выбор фильтра на странице:')
logger.info(f'Фильтр {k}, XPATH {v}')
time.sleep(2)
except Exception as ex:
logger.info(ex)
html_source_code = driver.page_source
html_soup: BeautifulSoup = BeautifulSoup(html_source_code, 'html.parser')
ReportFile = dirHtmlFiles + k + '.html'
with open(ReportFile, 'w') as file:
file.write(str(html_soup))
logger.info(f'Пользователь: {k}' + f' Сохраняю страницу: {ReportFile}')
time.sleep(3)
logger.info('Итерация словаря закончена')
logger.info('*****************STOP*****************')
file.close()
def whileStart():
schedule.every(50).seconds.do(parsPage)
while True:
time.sleep(20)
schedule.run_pending()
logger.info('Ожидаю итерацию')
if __name__ == '__main__':
whileStart()
Логи
2023-02-16T10:04:39.747912+0300 INFO __main__ Bot starts
2023-02-16T10:05:44.449133+0300 INFO Логин введен
2023-02-16T10:05:45.528080+0300 INFO Пароль введен
2023-02-16T10:05:47.736548+0300 INFO Пользователь авторизован
2023-02-16T10:06:07.754254+0300 INFO Ожидаю итерацию
2023-02-16T10:06:27.763708+0300 INFO Ожидаю итерацию
2023-02-16T10:06:47.782249+0300 INFO *****************START*****************
2023-02-16T13:05:57.177004+0300 INFO Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="CRM_DEAL_LIST_V12_C_0_search"]"}
(Session info: chrome=110.0.5481.77)
Stacktrace:
#0 0x55ee68901303 <unknown>
#1 0x55ee686d5d37 <unknown>
#2 0x55ee687125b2 <unknown>
#3 0x55ee687126c1 <unknown>
#4 0x55ee6874cb34 <unknown>
#5 0x55ee687329ad <unknown>
#6 0x55ee6874a88c <unknown>
#7 0x55ee68732753 <unknown>
#8 0x55ee68705a14 <unknown>
#9 0x55ee68706b7e <unknown>
#10 0x55ee6895032e <unknown>
#11 0x55ee68953c0e <unknown>
#12 0x55ee68936610 <unknown>
#13 0x55ee68954c23 <unknown>
#14 0x55ee68928545 <unknown>
#15 0x55ee689756a8 <unknown>
#16 0x55ee68975836 <unknown>
#17 0x55ee68990d13 <unknown>
#18 0x7f266a259b43 <unknown>
Источник: Stack Overflow на русском