Да, после скачивания нужно взять путь к файлу, сложить в переменную и вставить в экшн FTP. Пути к файлам можно взять через действия с файлами и директориями - http://zennolab.com/wiki/ru:actions:filesХммм. Спасибо но видимо не совсем то что мне нужно. Нужно сделать следующее действие. Найти на странице анкор, кликнуть по нему, скачается файл. Взять скаченный файл и залить по FTP на другой сервер. Этих файлов будет много и они буду с разными именами. Я так понимаю что лучше тогда использовать переменные. Скаченный файл положить в переменную и далее использовать ее дла заливки на сервер. После заливки возвращаемся к первоначальному экшену, ищем анкор, кликаем и т.д.
Вот эта тема поможет - http://zennolab.com/discussion/threads/kak-v-cikle-sravnit-opredelennyj-ehlement-na-stranice-v-c.21646Продолжу в этом же топике. После действия на странице надо дождаться появления кнопки, до ее появления висит текст "Pending". чем задать условие ждать и при появлении нажать?
HtmlElement he;
for(int i = 0; i < 20; i++) // 20 - количество повторений в цикле
{
he = instance.ActiveTab.FindElementByAttribute("input:text", "id", "text", "text", 0); // Тэг, Имя атрибута, Значение, Тип поиска, № совпадения (параметры как в конструкторе действий)
if(!he.IsVoid)
{
he.RiseEvent("click", "Full");
}
System.Threading.Thread.Sleep(2000); // Пауза, мс
}
Верно!Я так понимаю, нужно использовать "Свой код С#" в нужном месте?
Если в параметре "Значение" присутствуют символы \ , то поставьте перед кавычками @ .Внес параметры, при запуске экшена в логах ошибка http://joxi.ru/ZrJpyQJu1k1RZ2 в строке 3 в коде скобка.
Не совсем понял вопрос.Тут еще момент один, по появившейся кнопки я создал экшн в конструкторе действий при его выполнении, пока нужная кнопка не появиться на странице экшн тыкает в другую кнопку.
HtmlElement he;
for(int i = 0; i < 20; i++)
{
he = instance.ActiveTab.FindElementByAttribute("button", "class", @"button\ button_size_m", "regexp", 0);
if(!he.IsVoid)
{
he.RiseEvent("click", "Full");
break;
}
System.Threading.Thread.Sleep(1000);
}
Пропустим этот момент.Не совсем понял вопрос.
Все верно!Я правильно понимаю работу экшена понимаю? В нем 20 циклов с задержкой 1000мс каждый цикл проверяет наличие соответствия и как оно будет найдено, циклы прервутся и можно переходить к следующему экшену. Так? Или он сам выполнить нужное действие "click". У меня клика не сделал а просто отработал.
throw new Exception("Элемент не найден!");
После закрывающей скобки или до нее?Добавьте в код условие для выхода по красной стрелке, если элемент не будет найден, если нужно. В конец кода добавьте строку:
Значит не находит элемент (кнопку) за указанное время, поэтому долго (тайм-аут * количество циклов). Два варианта:Добавил эту строку и при любом раскладе, выход из экшена по красной стрелке. т.е. получается так, экшен дожидается кнопки, делает по ней клик, потом таймаутит (страно за чем если результат Ок и в переменную положили его и долго как то) и делает выход по красной стрелке.
Сорри, я тупанул!Хммм... Но клик по кнопке происходит как она появляется, действие выполняется я вижу.
Бывает! Я вот тоже, каким то образом пропустил в коде break; и экшн отрабатывал по полной. Исправил, сейчас отрабатывает до момента нажатия. Спасибо!Сорри, я тупанул!
Отрабатывает норм (https://www.yandex.ru/)А вот и фик! Переходит к следующему экшену не дождавшись появления кнопки. Таймаут поставил 5000, не помогло. переход происходит сразу же.
HtmlElement he;
for(int i = 0; i < 20; i++)
{
he = instance.ActiveTab.FindElementByAttribute("a", "innertext", "Посещаемое", "regexp", 0);
if(!he.IsVoid)
{
he.RiseEvent("click", "Full");
return "ok";
}
System.Threading.Thread.Sleep(1000);
}
throw new Exception("Элемент не найден!");
<div tabindex="0" class="goog-inline-block jfk-button jfk-button-standard" role="button" style="-moz-user-select: none;">Добавить</div>