Как отменить загрузку на chrome://downloads с помощью Selenium в Python 3Python

Программы на Python
Ответить
Anonymous
 Как отменить загрузку на chrome://downloads с помощью Selenium в Python 3

Сообщение Anonymous »

Этот вопрос очень похож на вопрос: веб-драйвер Selenium не может найти элементы в chrome://downloads

Я пытаюсь использовать Selenium с Python (3) для нажмите кнопку отмены на странице chrome://downloads. Мой вариант использования заключается в том, что у меня есть запутанная ссылка, для которой каждый раз, когда пользователь нажимает на нее, генерируется случайный токен. Если вы не нажмете на нее, вы не сможете начать загрузку (кажется, она запускает часть js, генерирующую токен, но мне не удалось покопаться в коде, чтобы выяснить, как это происходит).

Чтобы мой тест прошел, все, что мне нужно, это убедиться в том, что:
  • Начинается загрузка (но не выдает ошибку 404), и
  • Файл, который он пытается загрузить, имеет правильный размер.
Я пытаюсь это сделать, запуская загрузку, нажав кнопку элемент, затем откройте Selenium chrome://downloads, отмените загрузку и зафиксируйте размер файла, который он пытался загрузить.

Теоретически это выглядит так: должно сработать, камнем преткновения является попытка получить доступ к любым элементам в тегах #shadow-root на странице chrome://downloads. Решение другого вопроса, который я привел выше, к сожалению, больше не работает:

Код: Выделить всё

driver = webdriver.Chrome("chromedriver.exe")
driver.get("chrome://downloads/")

manager = driver.find_element_by_css_selector('body/deep/downloads-manager')
item = manager.find_element_by_css_selector('body/deep/downloads-item')
shadow = driver.execute_script('return arguments[0].shadowRoot;', item)
link = shadow.find_element_by_css_selector('div#title-area>a')

file_url = link.get_attribute("href")
... поскольку в строке объявления элемента происходит ошибка:

Код: Выделить всё

>>> item = manager.find_element_by_css_selector('body/deep/downloads-item')
Traceback (most recent call last):
File "", line 1, in 
File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/webelement.py", line 430, in find_element_by_css_selector
return self.find_element(by=By.CSS_SELECTOR, value=css_selector)
File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/webelement.py", line 659, in find_element
{"using": by, "value": value})['value']
File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/webelement.py", line 633, in _execute
return self._parent.execute(command, params)
File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"body/deep/downloads-item"}
(Session info: chrome=80.0.3987.149)
Это выходит за рамки моей компетенции, и буду очень признателен за любую помощь в выяснении того, как добраться до кнопки отмены.

Подробнее здесь: https://stackoverflow.com/questions/609 ... n-python-3
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»