|
v7: Управление IE через OLE. вопрос с полями ввода | ☑ | ||
---|---|---|---|---|
0
Const000
20.08.12
✎
20:31
|
Никто не сталкивался с такой штукой: есть страница из инета, в ней активные поля. Нужно ввести в них строчки и отправить :)
Я сначала вытаскиваю список форм, потом список элементов из них а дальше никак пробиться не могу - ткните носом плиз. MSDN что мог прочел, но видимо много букв :( И что интересно: При анализе страницы яндекса нашел только следующие поля input: <form id=form class="b-head-search" action = http://yandex.ru/yandsearch > <input autofocus="true"name="text"class="b-form-input__input"id="text"tabindex="1"autocomplete="off" maxlength="400" /> <input name=lr type=hidden value="47"> <input name=msid type=hidden value="20947.24450.1345477932.71505"> <input type="submit"value=""tabindex="20"class="b-form-button__input"/> </form> <form class="b-domik b-domik_type_onpage b-domik_service_mail g-js"onclick="return {name:'b\-domik', title:'Почта', register:'', err_msg:'введите латиницей'}" action="http://passport.yandex.ru/passport?mode=auth&retpath=http%3A%2F%2Fmail.yandex.ru" method="post"> <input class="b-input__text"id="b-domik-username"type="text"name="login"tabindex="30"> <input class="b-input__text"id="b-domik-password"type="password"name="passwd"tabindex="40"> <input id="b-domik-permanent"class="b-domik__check"name="twoweeks"type="checkbox"value="yes" checked tabindex="50"> <input hidefocus="true"type="submit"onmousedown="cp('v12uidetalon.mail.logout.loginmenu.mail')" value="" class="b-form-button__input" tabindex="60"/> </form> А 1С выдает одно "лишнее"... В идеале хотелось бы научиться определять поле ввода по имени (тег name) и заполнять его произвольной ерундой :) //----------------------------------- Процедура sleep(ms) стр="Ожидание "+ТекущееВремя(); Состояние(стр); сек=цел(ms/1000); ВвестиСтроку(стр, стр, 100, 0, сек); КонецПроцедуры //******************************************* Процедура Сформировать() True=-1; False=0; oIE = CreateObject("InternetExplorer.Application"); oIE.Visible=True; oIE.Navigate("http://www.yandex.ru/"); While oIE.Busy()=True Do sleep(1000); EndDo; doc1=oIE.Document; obj1_=doc1.Forms; LenObj1=obj1_.length(); For Form1=0 to LenObj1-1 Do objForm=obj1_.item(Form1); LenObj2=objForm.length(); Сообщить ("форма "+Form1+" полей "+LenObj2); For ElemForm=0 to LenObj2-1 Do objElem=objForm.item(ElemForm); Сообщить ("поле "+ElemForm); EndDo; EndDo; КонецПроцедуры //******************************************* |
|||
1
zladenuw
20.08.12
✎
21:23
|
а зачем формы ? разве по полям нельзя только ?
|
|||
2
oleg_prg
20.08.12
✎
22:22
|
Лови!
Вот код который на сайт rabota.by в поле поиска вбивает программист и делает отправку запроса Процедура Сформировать() ИЕ=СоздатьОбъект("InternetExplorer.Application"); ИЕ.Visible=0; НомерКомпании = 0; Адрес1 = "rabota.by"; ИЕ.Navigate(Адрес1); Пока ИЕ.ReadyState<4 Цикл КонецЦикла; ИЕ.Document.Forms(1).elements("key_string").Value=СокрЛП("Программист 1С"); ИЕ.Document.Forms(1).submit(); КонецПроцедуры |
|||
3
Const000
28.08.12
✎
16:43
|
Запоздалое спасибо, получилось вот так:
LenObj2=objForm.length(); For ElemForm=0 to LenObj2-1 Do ХХХ=objForm.elements (ElemForm); Сообщить ("Поле "+ElemForm+" - "+ХХХ.id+" : "+ХХХ.type); ХХХ.Value="1"; EndDo; obj1_.Submit () Аналогичный вопрос с картинками: Images=doc1.Images; Картинок=Images.length(); For ImageCounter=0 to Картинок-1 Do CurrentImage=Images.item(ImageCounter); Сообщить (""+CurrentImage.id+":"+CurrentImage.src); EndDo; т.е. названия и адреса картинок + сами объекты картинок видны и доступны. Хочется сохранить их на диск :) нашел http://www.sql.ru/forum/actualthread.aspx?tid=948455 из него http://bit.pirit.info/forum/viewtopic.php?t=9824 Так же прочел похожее Как скачать файл из инета? где уважаемый smaharbA решил вопрос с загрузкой файла через XMLHTTP. Но вот тут засада - мне нужно проанализировать капчу. Соответственно повторно читать с сайта нельзя. Она изменится, т.к. сессия будет другой. Можно ли как-то сохранить именно уже открытую в IE картинку в любом формате? Эксплорер мышкой это делает (сохранить как). И вроде бы execWB похож на искомое, но никак не выходит... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |