![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здравствуйте, форумчане! Столкнулся с проблемой нажать на кнопку отправки формы.
Пытался перебрать все компоненты формы 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 пикселей окно, и нужно чтобы на ней показывалась капча и поле для ее ввода. |