humanemulator.net — справка. Продукт, демо и покупка — на хуманэмулятор.рф | Демо | Купить | API | лог изменений

Обновлено в августе 2026. · Руководство humanemulator.net

Скачивание и загрузка файлов

Теги: браузер файлы

Это не заполнение текстовых полей. Скачивание — диалог браузера и папка на диске. Загрузка на сайт — input type="file" или системный диалог Windows. Оба ломаются, если ждать «как форму» без отдельного ожидания файла.

Скачать без ручного «Сохранить как»

Блок на хабе browser → downloads.

  1. set_default_download($folder) — куда класть файлы
  2. Скрыть диалог: disable_download_file_dialog (проверка: is_disable_download_file_dialog)
  3. Либо явно разрешить диалог: enable_download_file_dialog — для ручной отладки, не для ночи
  4. Клик по ссылке/кнопке — обычный DOM с wait
$browser->set_default_download("C:\\bots\\in");
$browser->disable_download_file_dialog();
$anchor->wait_element_exist_by_inner_text("Скачать");
$anchor->click_by_inner_text("Скачать");

Сброс папки по умолчанию: reset_default_download — снова будет диалог выбора пути.

Две копии Studio — разные папки download, иначе файлы перезапишут друг друга: порты.

Дождаться окончания загрузки

wait_download_and_get_file_path($wait_time_in_seconds=3000) — путь к файлу или пусто (не было закачки / таймаут). Единица — секунды. Значение по умолчанию огромное; для xlsx-отчёта обычно хватает 30–120.

$path = $browser->wait_download_and_get_file_path(120);
if (!$path) {
  echo "файл не пришёл";
}

По id:

Не путайте с print_to_pdf: печать страницы — другой метод, файл появляется сразу по пути, который вы сами передали.

Пока качается большой файл, можно смотреть is_download_complete по id из get_last_download_id. Сорвать зависшую закачку: cancel_download. Не вызывайте wait_download второй раз «на всякий случай» — дождитесь первого или отмените.

Загрузить файл на сайт (HTML file input)

Объект inputfile — это input type="file". Путь к локальному файлу задайте через value по name, в том числе во фрейме: set_value_by_name_by_frame_num($name, $value, $framenum).

$inputfile->set_value_by_name_by_frame_num("file1", "C:\\bots\\in\\act.pdf", -1);

Существование контрола: is_exist_with_attribute / in_frame. Клик по file input сам по себе часто открывает системный диалог — если цель «подставить путь без клика», используйте set value, не click.

Системный диалог Windows

Если после клика открывается окно «Открыть файл» проводника, это не HTML input в DOM. Дальше UI Automation: найти поле имени файла, вставить путь, подтвердить. Не ищите этот диалог методами inputfile.

Что делать с путём

Проверяйте расширение и is_pdf_file, если сайт врёт Content-Type. Пишите путь в лог сразу после wait_download — иначе ночью не понять, какой файл разобрали.

Одинаковое имя report.xlsx каждый день перезапишет вчерашний файл. Кладите в подпапку с датой или переименовывайте сразу после wait.

Сценарий: скачать отчёт и разобрать

$folder = "C:\\bots\\in";
$browser->set_default_download($folder);
$browser->disable_download_file_dialog();
$anchor->wait_element_exist_by_inner_text("Скачать");
$anchor->click_by_inner_text("Скачать");
$path = $browser->wait_download_and_get_file_path(120);
if (!$path) {
  $logger->error("download timeout");
} else {
  $logger->info("скачали", $path);
}

Дальше по расширению: xlsx — Excel, pdf — pdffile. Если сайт открывает системный «Сохранить как», диалог не отключён — вернитесь к disable_download_file_dialog и своей папке.

Загрузка на сайт в том же прогоне: не кликайте file input, если цель подставить путь — set_value_by_name_by_frame_num. Клик нужен, когда сайт жёстко открывает проводник: тогда UI.

FAQ

Wait вернул пусто. Диалог не отключён и ждёт клика; другая папка; клик не тот; файл качается дольше таймаута; антивирус держит файл. Смотрите get_download_info.

Загрузка «не прикрепляется». Неверный name, элемент в iframe, это не HTML file input, или сайт ждёт change-событие после клика по кнопке — тогда комбинация UI + путь.

Имя файла с кириллицей. Сохраняйте в папку без экзотики в пути диска; если сайт отвергает имя — переименуйте до set value.

wait вернул старый файл. В папке уже лежал вчерашний download с тем же именем, новая закачка не началась. Чистите папку или смотрите get_last_download_id / get_download_info.

print_to_pdf vs Скачать. Кнопка «Скачать PDF» на сайте — это download, не webpage→print_to_pdf. Печать текущей страницы — другой метод и путь, который вы сами передали.

Поиск: download, inputfile.

Все руководства · Формы