Куда скачивается файл в шаблоне

  • Автор темы Автор темы one
  • Дата начала Дата начала

one

Client
Регистрация
22.09.2015
Сообщения
7 003
Реакции
1 308
Баллы
113
Подскажите, куда скачивается файл по клику со страницы и как его после скачивания взять и загрузить по FTP на указанный сервер?
 
Подскажите, куда скачивается файл по клику со страницы и как его после скачивания взять и загрузить по FTP на указанный сервер?
По дефолту в папку Trash в директории программы. В шаблоне можно указать свою папку экшном Браузер>Настройки - Папка для загрузки файлов.
Trash.png
 
Хммм. Спасибо но видимо не совсем то что мне нужно. Нужно сделать следующее действие. Найти на странице анкор, кликнуть по нему, скачается файл. Взять скаченный файл и залить по FTP на другой сервер. Этих файлов будет много и они буду с разными именами. Я так понимаю что лучше тогда использовать переменные. Скаченный файл положить в переменную и далее использовать ее дла заливки на сервер. После заливки возвращаемся к первоначальному экшену, ищем анкор, кликаем и т.д.
 
Хммм. Спасибо но видимо не совсем то что мне нужно. Нужно сделать следующее действие. Найти на странице анкор, кликнуть по нему, скачается файл. Взять скаченный файл и залить по FTP на другой сервер. Этих файлов будет много и они буду с разными именами. Я так понимаю что лучше тогда использовать переменные. Скаченный файл положить в переменную и далее использовать ее дла заливки на сервер. После заливки возвращаемся к первоначальному экшену, ищем анкор, кликаем и т.д.
Да, после скачивания нужно взять путь к файлу, сложить в переменную и вставить в экшн FTP. Пути к файлам можно взять через действия с файлами и директориями - http://zennolab.com/wiki/ru:actions:files
 
Спасибо! Только вот не понятно как взять и положить в переменную именно тот файл который скачался в экшене? Вот мой пример, ищем на странице текст, кликаем по нему.
upload_2016-1-25_15-37-41.png
 
Последнее редактирование:
Переменные окружения - Page.LastDownloadedFile
 
  • Спасибо
Реакции: one
Да нашел, спасибо! Теперь при закачке этого файла в логах ошибки при том что файл на сервер загружается. Что тут может быть не так? Почему экшен пытается создать папку?

upload_2016-1-25_15-57-32.png
 
Что-то с правами доступа на FTP. Какой билд используете?
 
  • Спасибо
Реакции: one
Пишет, что невозможно создать директорию.
 
Последний, 5.9.7.1. Хммм, с правами? Но ведь файл пишется куда надо и причем тут сообщение о не возможности создание директории? Права на папку куда загружается файл стоят 751 это корень сайта.
 
Разобрался, методом подбора пути на сервере. От имени пользователя надо было указывать а не от корня диска.
 
  • Спасибо
Реакции: VladZen
Продолжу в этом же топике. После действия на странице надо дождаться появления кнопки, до ее появления висит текст "Pending". чем задать условие ждать и при появлении нажать?
 
Продолжу в этом же топике. После действия на странице надо дождаться появления кнопки, до ее появления висит текст "Pending". чем задать условие ждать и при появлении нажать?
Вот эта тема поможет - http://zennolab.com/discussion/thre...t-opredelennyj-ehlement-na-stranice-v-c.21646
 
  • Спасибо
Реакции: one
C#
C#:
Развернуть Свернуть Копировать
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); // Пауза, мс
}
 
  • Спасибо
Реакции: one
Я так понимаю, нужно использовать "Свой код С#" в нужном месте? Внес параметры, при запуске экшена в логах ошибка http://joxi.ru/ZrJpyQJu1k1RZ2 в строке 3 в коде скобка. Тут еще момент один, по появившейся кнопки я создал экшн в конструкторе действий при его выполнении, пока нужная кнопка не появиться на странице экшн тыкает в другую кнопку.
 
Я так понимаю, нужно использовать "Свой код С#" в нужном месте?
Верно!
Внес параметры, при запуске экшена в логах ошибка 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);
}
 
  • Спасибо
Реакции: one
Да, присутствуют символы "\". Указал перед @ и сейчас экшн выполняется, спасибо! Я правильно понимаю работу экшена понимаю? В нем 20 циклов с задержкой 1000мс каждый цикл проверяет наличие соответствия и как оно будет найдено, циклы прервутся и можно переходить к следующему экшену. Так? Или он сам выполнить нужное действие "click". У меня клика не сделал а просто отработал.
Не совсем понял вопрос.
Пропустим этот момент.
 
Я правильно понимаю работу экшена понимаю? В нем 20 циклов с задержкой 1000мс каждый цикл проверяет наличие соответствия и как оно будет найдено, циклы прервутся и можно переходить к следующему экшену. Так? Или он сам выполнить нужное действие "click". У меня клика не сделал а просто отработал.
Все верно!
Клик должен выполниться (строка: he.RiseEvent("click", "Full");), если элемент найден. Можете убрать эту строку, оставив только break; и отдельно следующим экшеном выполнить клик.
Добавьте в код условие для выхода по красной стрелке, если элемент не будет найден, если нужно. В конец кода добавьте строку:
Код:
Развернуть Свернуть Копировать
throw new Exception("Элемент не найден!");
 
  • Спасибо
Реакции: one
Добавьте в код условие для выхода по красной стрелке, если элемент не будет найден, если нужно. В конец кода добавьте строку:
После закрывающей скобки или до нее?
 
Добавил эту строку и при любом раскладе, выход из экшена по красной стрелке. т.е. получается так, экшен дожидается кнопки, делает по ней клик, потом таймаутит (страно за чем если результат Ок и в переменную положили его и долго как то) и делает выход по красной стрелке.
 
Добавил эту строку и при любом раскладе, выход из экшена по красной стрелке. т.е. получается так, экшен дожидается кнопки, делает по ней клик, потом таймаутит (страно за чем если результат Ок и в переменную положили его и долго как то) и делает выход по красной стрелке.
Значит не находит элемент (кнопку) за указанное время, поэтому долго (тайм-аут * количество циклов). Два варианта:
1. Не верные параметры.
2. Увеличить время ожидания или количество циклов.
 
Хммм... Но клик по кнопке происходит как она появляется, действие выполняется я вижу.
 
Хммм... Но клик по кнопке происходит как она появляется, действие выполняется я вижу.
Сорри, я тупанул!
Если добавили строку throw new Exception("Элемент не найден!");
то break; замените на return "ok";
 
  • Спасибо
Реакции: one
Сорри, я тупанул!
Бывает! :) Я вот тоже, каким то образом пропустил в коде break; и экшн отрабатывал по полной. Исправил, сейчас отрабатывает до момента нажатия. Спасибо!
 
А вот и фик! Переходит к следующему экшену не дождавшись появления кнопки. Таймаут поставил 5000, не помогло. переход происходит сразу же.
 
А вот и фик! Переходит к следующему экшену не дождавшись появления кнопки. Таймаут поставил 5000, не помогло. переход происходит сразу же.
Отрабатывает норм (https://www.yandex.ru/)
Код:
Развернуть Свернуть Копировать
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>
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)