среда, 30 декабря 2020 г.

Найти имя скачанного файла и проверить содержит ли оно определенный текст (Python/Selenium)

 Итак, задача такая: 

 - клиент кликает на Скачать кнопку,  начинается загрузка. Нужно найти скачиваемый файл в папке и проверить действительно ли это файл с расширением .dmg (для Mac).

Если название файла содержится в ссылке для скачивания, то решение этой задачи будет довольно простым. Но в нашей ситуации ссылка одна, при клике на нее, автоматически определяется Mac или Windows. Соответсвующий файл (.dmg для Mac, .exe для Windows) начинает скачиваться.


Код в файле теста:

def test_correct_app_should_be_downloaded_on_mac(driver):
page.open(driver)
assert page.is_downloaded_app_correct(driver, TestData.app_for_mac_format), \
"Downloaded App has incorrect for Mac format"

Код в файле Data:

TestData.sa_app_for_mac_format = ".dmg"

Код в файле Page:

def is_downloaded_app_correct(driver, expected_format):
before = os.listdir('/Users/anna/Downloads')
download_button = Button(driver, download_button_locator)
download_button.click()
max_wait = 30
current_wait = 0
while current_wait < max_wait:
after = os.listdir('/Users/anna/Downloads')
change = set(after) - set(before)
lenght = len(change)
if lenght == 1:
file_name = str(change.copy())
print(file_name)
if file_name.index(expected_format):
return True
else:
current_wait += 1
time.sleep(1)
print("The download has not started within " + str(max_wait) + "seconds.")
return False

Такой вариант подоедет для локальной проверки на компьютере или если вы можете точно определить путь, где сохраняется скачиваемый 
файл. Если же для прогонки автотестов используется BrowserStack - то с опрелением папки возникнут проблемы (BrowserStack 
не даст вам такой информации).
В таком случае код надо будет написать по-другому. Об этом моя следующая статья.
Как получить имя скачиваемого файла при использовании BrowserStack - СТАТЬЯ.


Как найти путь, куда сохраняется файл на Mac, читайте ТУТ.


Комментариев нет:

Отправить комментарий

Самые полезные ФУНКЦИИ Пайтона

 1)  PRINT - выводит на печать переменную, указанную в скобках print (average)   2)  LEN - посчитать количество элементов в списке student...