Selenium+Рython: как задать имя скачиваемого файла
Начал осваивать Selenium. Нужна помощь в скачивании файлов. В общем виде задача такая: мне нужно дойти до кнопки выгрузки отчета, нажать на эту кнопку, после чего скачивается файл. Код конечной кнопки для скачивания выглядит так:
Нажимаю на кнопку так:
button = driver.find_element_by_xpath('//*[@id="popup-window-content-stexport_lead_manager_r4ilewsylk_lrpdlg"]/div/div[1]/a')
ActionChains(driver).move_to_element(button).click().perform()
Код отрабатывает хорошо, файл скачивается. Проблема в другом - каждый раз система меняет имя файла для скачивания. А мне нужно скачивать всегда с одним именем, или в крайнем случае получать имя файла, который сейчас скачался. Подскажите как реализовать один из этих сценариев, т.к. моих знаний в Selenium пока ен хватает для решения.
Ответы (2 шт):
Вы не можете указать имя загружаемого файла через Selenium. Но можно после загрузки, найти этот файл и переименовать.
З.Ы.: найденные способы из Google могут содержать ошибки.
import os
import shutil
filename = max([Initial_path + "\\" + f for f in os.listdir(Initial_path)],key=os.path.getctime)
shutil.move(filename,os.path.join(Initial_path,r"newfilename.ext"))
Всем спасибо, вопрос снимается. Решил следующим образом:
- через .get_attribute("href") получил урл
- регулярным выражением из урла вытащил название файла.
- открыл документ по значению регулярного выражения pd.read_csv('C:\Users\Dima\Downloads\%s.csv' % opendoc, sep=';', encoding='utf-8')
- такой же конструкцией удалил файл после сбора информации.