Страница 1 из 2

Upload файлов используя диалог загрузки

Добавлено: 07 сен 2011, 17:26
igvard
Как делать upload файлов когда появляется виндовый диалог загрузки фалов?

пример для youtube.com.

Код: Выделить всё

<?php

$xhe_host ="127.0.0.1:7010";

// The following code is required to properly run XWeb Human Emulator
require("../Templates/xweb_human_emulator.php");

// сначала надо залогиниться на youtube.com

// navigate to google
$browser->navigate("http://upload.youtube.com/my_videos_upload");
// wait on browser
$browser->wait_for();

// тут задаём координаты кнопки Upload video 
$mouse->send_click(125,210);
sleep(3);

// обрабатываем диалог выбора фалов 
$window->execute_open_file("Выберите файлы для отправки","c:\\test\\Dom.mp4","&Открыть",false);

// Quit
$app->quit();
?>
Более подробно про функцию $window->execute_open_file($text,$path,$btn_text,$exactly=true);
$text - это часть текста заголовка или сам заголовок диалога которого надо обработать.
$path - это путь к файлу, который надо ввести в поле диалога
$btn_text - это текст кнопки на которую надо нажать
$exactly=true - искать диалог по части заголовка или по полному совпадению.

Эту функцию надо вызывать уже после того как диалог открыт. Теоретически эту функцию можно применять ко всем диалогам куда надо ввести путь и нажать какую то кнопку.
Есть ли & в названии кнопки можно легко определить нажав alt при открытом диалоге. Этот знак надо ставить перед той буквой, которая оказалась подчёркнутой после нажатия на alt.

Re: Upload файлов используя диалог загрузки

Добавлено: 08 сен 2011, 03:20
satih
спасибо, часто эти окна загрузки выскакивают.
igvard писал(а):Есть ли & в названии кнопки можно легко определить нажав alt при открытом диалоге. Этот знак надо ставить перед той буквой, которая оказалась подчёркнутой после нажатия на alt.
для инфы о кнопках, заголовках и т.п. неплохо подходит "AutoIt Window Info Tool", даст все тексты включая координаты и т.п.

Re: Upload файлов используя диалог загрузки

Добавлено: 09 сен 2011, 12:24
LLlaMaH
Что-то у меня при загрузке аватарки ВКонтакте не отрабатывает:

Код: Выделить всё

$inputfile->click_by_atribute('name','photo',true);
$app->pause(3000);
$window->execute_open_file("Choose File to Upload",'c:\logo.jpg',"&Открыть",true);
Что не так я делаю?

Re: Upload файлов используя диалог загрузки

Добавлено: 13 сен 2011, 15:40
igvard
Все вы делаете правильно, просто в данном случае показывается модальный диалог загрузки файлов, который останавливает поток выполнения команд и скрипт просто не попадает в команду execute_open_file до тех пор пока диалог не закроют ручками.

Для таких ситуаций в функцию execute_open_file был добавлен логический параметр thread.
По умолчанию thread=false. Когда этот параметр задан как true функция запускается как отдельный поток. При этом этот поток будет работать до тех пор пока не найдёт заданное окно или скрипт не остановится командой $app->quit(); или кнопкой Stop.

пример для вконтакте:

Код: Выделить всё

<?php

$xhe_host ="127.0.0.1:7010";

// The following code is required to properly run XWeb Human Emulator
require("../Templates/xweb_human_emulator.php");
// перейти на страничку вконтакте

// изменим свою фотографию 
$element->click_on_element_by_inner_text("Изменить фотографию",true);
sleep(2);
// загрузим новую
$element->click_on_element_by_inner_text("Загрузить новую фотографию",true);
sleep(2);
// вызовем функцию как поток
$window->execute_open_file("Выбор ",'c:\\xhe.jpg',"&Открыть",false,true);
sleep(3);
// кликнем на inputfile элемент для того что бы отобразить диалог загрузки файлов
$inputfile->click_by_atribute('name','photo',true);

// Quit
$app->quit();
?>
Все версии 4.1.1 сегодня были перезалиты с изменением функции execute_open_file.

Re: Upload файлов используя диалог загрузки

Добавлено: 16 окт 2011, 07:31
xyu
Не работает с установленным silverlight http://www.microsoft.com/getsilverlight ... fault.aspx

Re: Upload файлов используя диалог загрузки

Добавлено: 16 окт 2011, 08:12
xyu

Код: Выделить всё

$window->execute_open_file("Открыть","c:\\test","&Открыть",false,true);

Re: Upload файлов используя диалог загрузки

Добавлено: 17 окт 2011, 01:08
igvard
а как именно не работает? диалог появляется, но не нажимается кнопка и не заполняется поле?

Re: Upload файлов используя диалог загрузки

Добавлено: 17 окт 2011, 01:40
xyu
Да

Re: Upload файлов используя диалог загрузки

Добавлено: 16 май 2012, 21:45
sas
а что можно посоветовать тем у кого диалог модальный и версия basic у которой нет ф-ии execute? решение с autoit знаю, а можно средствами xhe?

Re: Upload файлов используя диалог загрузки

Добавлено: 28 ноя 2012, 22:25
fangetehum
не работает эта функция (execute_open_file) - открывается диалоговое окно и ничего не делается (про AutoIT знаю, очень сильно охота реализовать без помощи AutoIt).
Система: Win7 64, SilverLight удалил, IE10, XWeb однопоточный

Re: Upload файлов используя диалог загрузки

Добавлено: 29 ноя 2012, 15:23
bigfozzy
принято, бум разбираться

Re: Upload файлов используя диалог загрузки

Добавлено: 19 мар 2013, 14:39
oleg88889
bigfozzy писал(а):принято, бум разбираться
Разобрались? Надо аватарки выгружать, не получается.

Re: Upload файлов используя диалог загрузки

Добавлено: 19 мар 2013, 15:38
bigfozzy
да, функция должна работать

Re: Upload файлов используя диалог загрузки

Добавлено: 22 мар 2013, 12:21
oleg88889
Не работает. Пробовал указывать имя файла с разрешением, пробовал путь с одним слешем, два последних параметра пробовал во всех вариациях. На скрине окно выгрузки аватарки фейсбука. Что не так делаю?

Re: Upload файлов используя диалог загрузки

Добавлено: 25 мар 2013, 12:34
bigfozzy
на этой неделе буду плотно заниматься решением этой проблемы.