Что нового

[Автоматизация] Клик по кнопке в браузере, которой нет

kaa936

Новичок
Сообщения
10
Репутация
2
Всем привет
Столкнулся с интересной ситуацией, которую ни как красиво не решить.
на странице есть Инпут для ввода пути загружаемого файла, сам инпут рид_онли. тоесть ввести сразу путь туда нельзя. визуально в этом инпуте есть кнопка, которая открывает диалог выбора файла. Но в ХТМЛ она ни как не реализованна.

Задача указать путь к нужному файлу.

Проблема. Если я делаю клик по инпуту : $oInput.Click()
то диалог выбора файла отображается, НО скрипт стоит на $oInput.Click() и дальше отлавливать появившиеся окно, чтобы его заполнить, я не могу.
Отсюда вопрос - как кликнуть и не ждать?
Есть функция _IELinkClickByIndex, которая позволяет кликать но не ждать, но там клик по ИНДЕКСУ, а как найти индекс элемента я не понял. просто перебором значений меня хватило с 0 до 20, отработка скрипта до этого момента занимает больше 5 минут, при этом не факт что эта функция поможет.
Есть у кого предложения как это решить?
У меня пока один вариант - распаралелить, второй скрипт будет просто ловить нужное окно и тупо его заполнять, но это не очень красиво и универсально.
Ссылку на сайт дать к сожалению не могу. сайт под сертификатом
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
kaa936
на странице есть Инпут для ввода пути загружаемого файла, сам инпут рид_онли. тоесть ввести сразу путь туда нельзя. визуально в этом инпуте есть кнопка, которая открывает диалог выбора файла. Но в ХТМЛ она ни как не реализованна.
Реализованна: у инпута есть атрибут type со значением file
Код:
 <input type="file" />
 
Автор
K

kaa936

Новичок
Сообщения
10
Репутация
2
спасибо всем.
правда тот способ, что сделал я изначально мне почемуто уже больше нравиться.
С распаралеливанием. окно вызывать приходиться часто, а меняется только содержимое выбранного файла. А так висит себе процесс, который ждет это окошко, заполняет его и жмет ок.
единственное что, при посылке через КонтролСенд строчки пути, первые три символа путались, остальная строка посылалась нормально. вылечилось установкой задержки при посылке первых символов.

Код:
$pat = "D:/UK_bot/temp_card.txt";@ScriptDir & "\temp_card.txt"
$wnd = WinWaitActive("Выбор файла для выгрузки")
ControlSend($wnd, "", "[CLASS:Edit; INSTANCE:1]", 'D' )
Sleep(100)
ControlSend($wnd, "", "[CLASS:Edit; INSTANCE:1]", ':' )
Sleep(100)
ControlSend($wnd, "", "[CLASS:Edit; INSTANCE:1]", '\' )
Sleep(100)
ControlSend($wnd, "", "[CLASS:Edit; INSTANCE:1]", 'UK_bot\temp_card.txt' )
ControlClick($wnd, "", "[CLASS:Button; INSTANCE:1]")
 
Верх