У меня есть этот селен приложение, которое содержит функцию загрузки файла, который вызывается рекурсивно после каждой загрузки на веб-сайтеКак мы можем ждать текста сообщения выскакивают селеном
Проблема:
функция вызывается очень быстро, и она не ждет, когда загрузка будет выполнена. Что испортило весь процесс подачи заявки. Я знаю, что могу добавить time.sleep()
, однако я не знаю размер файлов и продолжительность загрузки. Так что я предпочитаю, чтобы добавить проверку, чтобы увидеть, если файлы будут загружены
моего решения
К счастью для меня успешное сообщения появляется, когда закачка сделана
Так что я решил для добавления success_element
, который ожидает, что сообщение об успешном завершении появится, как видно из кода ниже
def upload(driver, fileNum, filePath):
#click ok to upload
ok_link = driver.find_element_by_class_name("borderButton")
ok_link.click()
#wait for success message to pop out(FAILS)
success_wait = WebDriverWait(driver, 1200)
success_element = success_wait.until(EC.visibility_of_element_located(By.LINK_TEXT("File(s) have(s) been uploaded successfully!")))
#call function again to upload more after succesful message pops out
upload(driver, fileNum, filePath)
Ошибка:
Я получил эту ошибку ниже сразу после первой группы файлов будут загружены, так как он не нашел сообщение об успехе сразу, что он не должен так или иначе, и я подумал, что будет ждать он после загрузки выполняется в течение 1200 секунд (примерно 20 минут, что является максимальным)
Как решить эту проблему. Любые другие решения?
success_element = success_wait.until(EC.visibility_of_element_located(By.LINK_TEXT("File(s) have(s) been uploaded successfully!"))) TypeError: 'str' object is not callable
вам нужно переключить с помощью driver.switch_to.window() для всплывающих – tinySandy
Вероятно, не имеет отношения к вашему вопросу, но: Почему вы делаете рекурсивный вызов для загрузки? Не проще и легче создавать петлю? – BriceP
@BigOldTree Я не понимаю, можете ли вы расширить? –