Что нового

Ввод значения в текстовое поле всплывающего окна

Woland_D

Новичок
Сообщения
18
Репутация
2
Вечер добрый.
Готового решения не прошу, пожалуйста - пните в нужном направлении.

Была поставлена задача создать группу на сайте http://vk.com/ и разместить там сотню-другую фотографий.
Группу создал руками, авторизированный вход на сайт, переход в группу, потом в раздел "Добавление фотографий" - проблем не вызвали. От использования флеш-загрузчика отказался.

Кнопку "Выбрать файл" - программно с помощью скрипта нажал, вторым скриптом (потому что первый скрипт "зависает", пока всплывающее окно не закроется) - заполняю текстовое поле и нажимаю кнопку "Окрыть" во всплывающем окне.

И далее, чудеса - на сервер файл не заливается. Путём экспериментов установил, что проблема в программном нажатии на кнопку "Выбрать файл". Код скрипта ниже...

Скрипт 1
Код:
#include <IE.au3>

$login_val = InputBox("Ввод учётных данных", 'Введите логин', 'user_name')
$pass_val = InputBox("Ввод учётных данных", 'Введите пароль', 'my_pass')
$url_group = InputBox("Ввод группы", 'Введите адресс группы', 'http://vk.com/club37880264')

$oIE = _IECreate('http://vk.com/')

$login = _IEGetObjByName($oIE, 'email')
_IEFormElementSetValue($login, $login_val)

$pass = _IEGetObjByName($oIE, 'pass')
_IEFormElementSetValue($pass, $pass_val)

$button = _IEGetObjById($oIE, 'quick_login_button')
_IEAction($button, 'click')

Sleep(5000)
_IENavigate($oIE, $url_group)

InetGet('http://u-news.org.ua/uploads/posts/2012-04/1334224069_1.jpg', 'pt_13.jpg')

_IELinkClickByText($oIE, 'Добавить')
Sleep(5000)

$foto_button = _IEGetObjByName($oIE, 'photo')
_IEAction($foto_button, 'click')
MsgBox(0, 'Окно', 'Ждёмсъъъ')


Второй скрипт, вставляющий имя файла и нажимающий кнопку.
Код:
While 1
	Do
		Sleep(500)
	Until WinExists("Выбор файла для выгрузки")

	WinActivate("Выбор файла для выгрузки")
	ControlSetText("Выбор файла для выгрузки", "", "[CLASS:Edit; INSTANCE:1]", 'pt_13.jpg')
	ControlClick("Выбор файла для выгрузки", "", "[CLASS:Button; INSTANCE:1]")

	;Ждем когда окно закроется
	Do
		Sleep(500)
	Until Not(WinExists("Сообщение с веб-страницы"))
WEnd


Подскажите, в чём загвоздка в каком направлении смотреть...

P.S.: способ решения путём использования MouseClick - нашёл, но хотелось бы обойтись без кликов по координатам.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Woland_D [?]
И далее, чудеса - на сервер файл не заливается.
Вот в этой строке попробуйте указать полный путь к файлу
Код:
ControlSetText("Выбор файла для выгрузки", "", "[CLASS:Edit; INSTANCE:1]", 'С:\dir\dir\file.jpg')
 
Автор
Woland_D

Woland_D

Новичок
Сообщения
18
Репутация
2
Спасибо за совет. Пробывал такое изначально.
Также пытался задавать сначала рабочим каталогом - каталог с картинкой.

Смысл в том, что если нажать кнопку руками - файл на сервер попадает при любом варианте (полный путь к файлу или только его имя). Если же нажать программно - как задать картинку - роли нет. Даже если картинку указать явно в открывшемся окне, напрямую мышкой, и также после мышкой подтвердить.
Такое ощущение, что при нажатии программно не срабатывает какой-то триггер...

Пришлось решать пробему MouseClick().
 
Верх