|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Нажать кнопку без name и id в WebBrowser
Здравствуйте, форумчане! Столкнулся с проблемой нажать на кнопку отправки формы.
Пытался перебрать все компоненты формы Elements := WebBrowser.oleobject.document.forms.item(0).elemen ts; Elements.Item(0,1,2 и т.д.).Click(); но это не помогло. Нашел пример поиска кнопки по id и name , но это не помогает, т.к. у кнопки нет таких свойств. Был вариант нажимать кнопку P := WebBrowser.ClientToScreen(Point(100, 100)); SetCursorPos(P.X+150, P.Y+150); mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); но это не удобно. Каким еще способом можно нажать кнопку или отправить форму? Код формы: <form id="wallAddForm" onsubmit="return addwallrecord(534678, 'user', $('#wallCommentBlock').val(), 'тут набор символов');"> <input type="hidden" class="hidden" id="ftoken-f-addWallRecord" name="ftoken-f-addWallRecord" value="2bc7c58467" /> <div id="wallCommentBlockWrap"><textarea id="wallCommentBlock" name="communityWallRecord"></textarea> // Поле ввода текста <div><a class="btn btn-blue" href="javascript: void(0)" onclick="$('#wallAddForm').submit()">Отправить</a></div> //Кнопка на которую следует нажать </form> |
#2
|
||||
|
||||
1. у кнопки есть класс
2. можно выполнить скрипт "$('#wallAddForm').submit()" Пишу программы за еду. __________________ |
#3
|
|||
|
|||
Цитата:
2. А как если не секрет? |
#4
|
|||
|
|||
У меня похожий вопрос
Что тут может быть не так? вроде как ошибок нет, а не логинит....
Код:
begin idhttp1.HandleRedirects:=true; // StrPage:=idhttp1.Get('------------------------------------'); //ssylka:=Pars('<form action="', StrPage,'"'); ssylka:='-----------------------------------'; Data:=TStringList.Create; Data.Add('form_name='+Edit1.Text); Data.Add('form_pass='+Edit2.Text); Data.Add('form_log=Вход'); StrPage:=idhttp1.Post(ssylka, Data); if Pos('exit', StrPage)<>0 then WebBrowser1.Navigate('хххххххххххххххххххххххххххххххххххххххх') else WebBrowser1.Navigate('ууууууууууууууууууууу'); Data.Free; end; |
#5
|
||||
|
||||
у Indy HTTP запрос всегда должен начинаться с протокола, обычно "http://". естественно, что "ssylka:='-----------------------------------';" не подходит.
Пишу программы за еду. __________________ |
#6
|
|||
|
|||
Цитата:
все ссылки начинаются с http:// проблема не в этом я пробывал парсить, и пробовал этим методом, никак не принимает, почему не знаю.... Я поставил проверку. Если логинит, захожу в профиль, если нет, выкидывает на главную. При чем при удачном залогинивании, даже если бы я оказался на главной, слева бы всеравно была ссылка "мой профиль" а ее нет... Пропустил через снифер передаются только эти 3 запроса. Также хотел бы узнать можно ли поставить по умолчанию на WebBrowser не IE а какой нибудь более адекватный браузер? Если да, то как? Ну или как убить его тупые ошибки сценария на каждой странице? Последний раз редактировалось arantir92, 23.12.2011 в 23:28. |
#7
|
||||
|
||||
для POST запроса нужно указывать "Content-Type: application/x-www-form-urlencoded":
Код:
IdHTTP1.Request.ContentType:='application/x-www-form-urlencoded'; Пишу программы за еду. __________________ |
#8
|
|||
|
|||
И еще 1 вопрос, мне нужно вывести на WebBrowser небольшую часть сайта, или вернее сказать, центрировать эту часть сайта на небольшом окошке.
Примерно 50х50 пикселей окно, и нужно чтобы на ней показывалась капча и поле для ее ввода. |