Вы захотите использовать ожидания и ожидаемые условия при попытке найти элементы, чтобы убедиться, что они могут быть найдены и находятся в надлежащем состоянии.
Заменить
submit = driver.find_element_by_css_selector("input[type='SUBMIT'][value='Search']")
на
submit = wait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[type='SUBMIT'][value='Search']")))
Вам необходимо добавить следующее:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.webdriver.support import expected_conditions as EC
В вашем коде возникла проблема с поиском последнего элемента, поэтому вам также необходимо внести это изменение:
Заменить:
button = driver.find_element_by_link_text("<img src='./img/search/download_analysis_result.png'/>")
на
button = wait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "img")))
Было бы неплохо использовать аналогичный подход для поиска и взаимодействия с элементами с использованием ожиданий и ожидаемых условий в других областях. вашего сценария. Это позволит вашему скрипту быть более устойчивым и способным обрабатывать проблемы с синхронизацией без лучшего сбоя.