Я использовал эту функцию https://stackoverflow.com/a/48267887/11220889 для ожидания завершения загрузки и возврата пути к файлу после завершения.И до сих пор она прекрасно работала.
Функция
def every_downloads_chrome(driver):
if not driver.current_url.startswith("chrome://downloads"):
driver.get("chrome://downloads/")
return driver.execute_script('''
var items = downloads.Manager.get().items_;
if (items.every(e => e.state === "COMPLETE"))
return items.map(e => e.file_url);
''')
Как она называется
paths = WebDriverWait(driver, 120, 1).until(every_downloads_chrome)
Ошибка, которую я получаю
TypeError: 'NoneType' object is not subscriptable
Итак, из того, что я могу собрать, что-то изменилось, что стало причиной того, что функция не возвращала путь.Я полагаю, что это связано с изменением в Chrome или, более точно, в драйвере Chrome.У меня есть две причины для такого предположения:
1) У меня была эта функция в другом коде, который использовала моя коллега, и она позвонила мне, сказав, что вчера она выдавала эту ошибку.
2) Ни один код не изменился, поэтому изменение должно быть в chrome
Я бы хотел продолжать использовать этот скрипт, но если это невозможно, есть другая функция, которая ожидает завершения загрузки и возвращаетпути и в идеале делает все это через драйвер, а не через путь к файлу, так как несколько пользователей используют мои коды на нескольких машинах.
РЕДАКТИРОВАТЬ: Версии-
Name: selenium
Version: 3.141.0
Name: Chrome Browser
Version: 73.0.3683.86
Name: Chrome Driver
Version: 2.43.600210
Name: System
Version: Windows 10 Pro x64