Из своего опыта с селениумом подозреваю, что в какие-то моменты элемент DOM может там уже не быть, когда вы пытаетесь его использовать, это одна из проблем, которые вылезают в селениуме на динамических приложениях, в частности на многих SPA на реакте.
Это из-за того, что визуально сам веб-элемент как бы не изменился, но на самом деле это уже вообще не тот элемент, даже если локатор совпадает. При поиске элемента по локатору возвращается element id (выглядит как UUID) этого элемента, с которым и происходят операции. Если дерево было перестроено после получения element id, то возникает ошибка поиска этого элемента, чтобы осуществить над ним действие.
Обычно может помочь получать элемент по локатору прямо перед его использованием (типа find_element().click()), либо ждать, пока обновления закончатся и как-то это определять. Сам selenium не ждет, пока обновление всего DOM закончится окончательно (хотя у него и есть таймаут поиска), так что над этим придется поэкспериментировать, чтобы определять, что в момент действия вероятность обновления либо нулевая, либо низкая. Его, собственно, многие за это и не любят, хотя при правильном понимании и приготовлении (что обычно занимает время), он может быть очень стабильным.
Собственно таймаут поиска элемента не всегда работает, когда изменение страницы происходит после того, как элемент найден, но до того, как с ним что-то пытаются сделать.
Такие вот дела. Я бы попробовал посмотреть, с чем возникает ошибка и, если это по причине того, что элемент не найден, попытался пере-найти этот элемент и потом выполнить действие.