Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2015, 22:54   #11
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

разметку покажите и скрипты
lomastr_ вне форума Ответить с цитированием
Старый 29.01.2015, 23:25   #12
bunukar
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 40
По умолчанию

Цитата:
Сообщение от lomastr_ Посмотреть сообщение
разметку покажите и скрипты
Разметка очень огромна, покажу лишь то, что требуется.

Код HTML:
<select class="form-input-select" id="fld_category_id" name="category_id" title="Выберите категорию объявления">
<option value="">-- Выберите категорию --</option>
<option value="9">Автомобили с пробегом</option>
<option value="109">Новые автомобили</option>
<option value="14">Мотоциклы и мототехника</option>
<option value="81">Грузовики и спецтехника</option>
<option value="11">Водный транспорт</option>
<option value="10">Запчасти и аксессуары</option>
<option value="24">Квартиры</option>
<option value="23">Комнаты</option>
<option value="25">Дома, дачи, коттеджи</option>
<option value="26">Земельные участки</option>
</select>

//И затем идет это:
<div class="form-row form-row-required form-row-clearfix" id="params" style="display: none;"> <label class="form-label ">
 Выберите параметры
</label> <div id="filters" class="form-params params">
</div> </div>
Это исходная разметка. Но когда я выбираю, к примеру, мотоциклы, происходит следующее:

Код HTML:
<div class="form-row form-row-required form-row-clearfix" id="params" > <label class="form-label ">
 Выберите параметры
</label> <div id="filters" class="form-params params">
<div class="param param-s form-param" id="param_30" style="clear:left;">
<select id="flt_param_30" class="form-input-select" name="params[30]" title="Выберите Вид техники"> <option value="">-- Вид техники --</option>
  <option value="4966">Багги</option>
  <option value="112">Вездеходы</option>
  <option value="4967">Картинг</option>
  <option value="110" selected>Квадроциклы</option>
  <option value="109">Мопеды и скутеры</option>
  <option value="4969">Мотоциклы</option>
  <option value="2833">Снегоходы</option>
  </select>
      
</div>
</div> </div>
Т.е. динамически появляется еще один селект.

По поводу JS, он тоже огромен, но вроде бы этот скрипт отвечает за появление селекта:

https://www.avito.st/s/cc/1f18e4e919...8df.js?84ba8d9
bunukar вне форума Ответить с цитированием
Старый 29.01.2015, 23:47   #13
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

это вот это https://www.avito.ru/info/apps#iphone? а ссылка у вас есть на страницу?
lomastr_ вне форума Ответить с цитированием
Старый 29.01.2015, 23:53   #14
bunukar
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 40
По умолчанию

Цитата:
Сообщение от lomastr_ Посмотреть сообщение
это вот это https://www.avito.ru/info/apps#iphone? а ссылка у вас есть на страницу?
Нет, не это. Да, ссылку нужно было сразу дать

https://www.avito.ru/additem

Попробуйте выбрать категорию, и появятся дополнительные Селекты. В общем, суть - заполнить это форму.
bunukar вне форума Ответить с цитированием
Старый 30.01.2015, 09:06   #15
bunukar
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 40
По умолчанию

Проблему решил деревенским способом - нажатии по SUBMIT, значение СЕЛЕКТ1 выбиралось и появлялся СЕЛЕКТ2.

Возникла новая проблема. Загрузка изображений на этом сайте идёт через JS, что очень проблематично. Решил физически загружать файлы.

Вопрос - как загрузить файл без открытия диалогового окна в WebBrowser?

Т.е. к примеру, программно эмулировать вызов диалогового окна, подставить путь к файлу и нажать ОК. Возможно ли такое?

П.С Вызов окна сделал - оно открывается. Как можно указать имя файла и нажать ОК программным путем?

Последний раз редактировалось bunukar; 30.01.2015 в 09:27.
bunukar вне форума Ответить с цитированием
Старый 30.01.2015, 11:15   #16
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

Да проверил, тут просто так событие не срабатывает.
Надо запустить событие непосредственно, можно попробовать так:
Код:
uses
  MSHTML;

...
var
  document : IHTMLDocument3;
  element  : OleVariant;
  value   : OleVariant;
begin
  if browser.Document <> nil then begin
    if browser.Document.QueryInterface(IHTMLDocument3,document) = S_OK then begin
      element  := doc.getElementById('fld_category_id');
      element.selectedIndex := 4;
      element.FireEvent('onchange', value);
    end;
  end;
end;
если так не получиться то через скрипт (это проверил)
Вам надо внедрить в документ (после загрузки) примерно вот такой скрипт
Код:
<script>function z(idx){
var element = document.getElementById('fld_category_id');
element.selectedIndex=idx;
if ('createEvent' in document) {
    var evt = document.createEvent('HTMLEvents'); 
   evt.initEvent('change', false, true);
    element.dispatchEvent(evt);
}
else    element.fireEvent('onchange');
 }
</script>
потом его выполнить
browser.document.parentWindow.execS cript('z(4)');

пысы: писал тут
lomastr_ вне форума Ответить с цитированием
Старый 30.01.2015, 11:51   #17
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

вообще зачем вам брузер? возьмите например инди или чего другое и все сделаете.
lomastr_ вне форума Ответить с цитированием
Старый 30.01.2015, 12:07   #18
bunukar
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 40
По умолчанию

Цитата:
Сообщение от lomastr_ Посмотреть сообщение
вообще зачем вам брузер? возьмите например инди или чего другое и все сделаете.
Не совсем понял, как внедрить в документ скрипт?

По поводу инди - я их не особо знаю, да и задача стоит немного иная - не просто POST/GET, а физическая работа с сайтом.

А вы не поможете мне с вопросом о диалоговом окне?
bunukar вне форума Ответить с цитированием
Старый 30.01.2015, 13:24   #19
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

Цитата:
Не совсем понял, как внедрить в документ скрипт?
создать элемент скрипта и добавить в документ (например в тело)
Код:
script := document.createElement('script');
script.text := '<сам скрипт>';
document.Body.appendChild(script);
Цитата:
не просто POST/GET, а физическая работа с сайтом.
непонимаю что такое физическая работа с сайтом? сайт это виртуальность, не более, как с виртуальностью работать физически?

Цитата:
А вы не поможете мне с вопросом о диалоговом окне?
тут надо в винапи лезть, если работать с окном, если без него то надо смотреть позволит вам это сделать секюрити, и что-то мне подсказывает что нет, а вот если работать с самим http то проблем нет.
lomastr_ вне форума Ответить с цитированием
Старый 30.01.2015, 14:07   #20
bunukar
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 40
По умолчанию

Цитата:
Сообщение от lomastr_ Посмотреть сообщение
создать элемент скрипта и добавить в документ (например в тело)
Код:
script := document.createElement('script');
script.text := '<сам скрипт>';
document.Body.appendChild(script);
непонимаю что такое физическая работа с сайтом? сайт это виртуальность, не более, как с виртуальностью работать физически?

тут надо в винапи лезть, если работать с окном, если без него то надо смотреть позволит вам это сделать секюрити, и что-то мне подсказывает что нет, а вот если работать с самим http то проблем нет.
WinAPI я совершенно не знаю, к сожалению.

По поводу скрипта - спасибо, попробую сделать по вашему коду.

Просто абсолютно все публикаторы объявлений на авито (платные и нет) используют Пост/Гет. Не знаю, с чем это связано, но через сторонние программы, даже добавляя 1 объявление - оно уходило в бан через 1-2 дня (а то и раньше) вместе с аккаунтом. Размещая же вручную, именно руками, "тыкая" по ссылкам и прописывая все формы - объявление висит неделями. В чем подвох - понятия не имею. Но именно "ручного" добавления я и пытаюсь добиться от программы. Делаю это для себя, поэтому "правильность" кода в принципе не важна, главное чтобы работало как нужно
bunukar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
HTML-форма, компоненты. manula PHP 3 19.02.2013 12:07
Форма HTML Stens HTML и CSS 1 19.12.2012 01:19
Динамическая форма с радио и селект Benderbej JavaScript, Ajax 0 28.08.2010 19:07
динамическая форма DmitryKh Microsoft Office Excel 1 12.04.2010 11:28
Форма в html Ruska882009 HTML и CSS 2 27.05.2009 20:30