Просмотр полной версии : нажать на кнопку и заполнить поле? [Delphi]
:::vertas:::
25.02.2008, 20:11
тема такая, на мэил.ру есть чаты, при заходе в любой чат появляется поле куда нужно ввести сообщение и кнопка "Отправить"
мне же нужно сделать програмно чтобы поле заполнялось и нажималась кнопка отправить через определенный промежуток времени, по сути это будет флудер.
Делфи:
Я поместил на форму компонент WebBrowser1, поле ввода и кнопку соответственно, но проблема оказалась не в этом...
сколько я не пробовал заполнить програмно поля и давануть на кнопку ничего не вышло...
Если кто поможет буду благодарен :)
вот собственно теги страницы http://chat.mail.ru/ (в любом чате):
меня интересует
<input class="discuss" type="text" name="txtr" id="txtr" value="">
<input id=sendbtn type="submit" value="Отправить" onmousemove="window.status='Отправить'">
кому интересно зайдите в любой чат мэил ру и посмотрите html код.
Нужно сделать POST запрос. Вот статья с примерами, там есть пример пост запроса на дельфи: http://forum.sysman.ru/index.php?showtopic=12171
:::vertas:::
25.02.2008, 23:09
мдя... но это не то
нужно чтобы визуально в компоненте WebBrowser1 заполнилось поле, после чего также нажалась кнопка
то что в статье написано я десяток раз сам делал это понятно
нужно сделать примерно чтото типа этого:
WebBrowser1.oleobject.document.getelementsbyid('tx tr').item(0).Value:=Edit8.Text+Edit9.Text;
WebBrowser1.oleobject.document.getelementsbyid('se ndbtn').item(0).Click;
только вот как???
этот пример не работает сколько я не пробовал, даже меняя item на 1,2, 3, 4 ничего не происходит.
Програмно открываешь браузер с нужной страницей, програмно передвигаешь мышку на текстовое поле, програмный клик => Поле становится активным, Прогамное нажатие клавишь, соответсвенно тексту, програмное передвижение мыши на кнопку програмный клик...
presidentua
26.02.2008, 02:48
мдя... но это не то
нужно чтобы визуально в компоненте WebBrowser1 заполнилось поле, после чего также нажалась кнопка
ПОСТ запрос, как сказал Kaimi, это самый оптимальный вариант. Читай хтмл-страницу, что получил. Ищи там форму ввода, а потом оправляй ПОСТ запрос.
nc.STRIEM
26.02.2008, 11:34
есле нужно визуально, запиши видео, воспроизведи его и в нужный момент отправь http пакет
post запрос, либо грей руки об клаву, придется много извращаться...
De-visible
01.03.2008, 21:16
:::vertas:::, Kaimi направил тебя на отличную статью.....
Там все есть.....Или тебе нужен готовый исходник?????
Если не сложно выложи что ты сам пытался делать....Поглядеть интересно...
function TForm1.ByName(FieldName: string; Value: string): Boolean;
var
i, j: Integer;
FormItem: Variant;
begin
Result := False;
if WebBrowser.OleObject.Document.all.tags('FORM').Len gth = 0 then
begin
Exit;
end;
for I := 0 to WebBrowser.OleObject.Document.forms.Length - 1 do
begin
FormItem := WebBrowser.OleObject.Document.forms.Item(I);
for j := 0 to FormItem.Length - 1 do
begin
try
if FormItem.Item(j).Name = FieldName then
begin
if Value = 'Click' then
FormItem.Item(j).Click
else
FormItem.Item(j).Value := Value;
Result := True;
end;
except
Exit;
end;
end;
end;
end;
function TForm1.ByImg(Src: string; Value: string): Boolean;
var
i, j: Integer;
FormItem: Variant;
begin
Result := False;
if WebBrowser.OleObject.Document.all.tags('FORM').Len gth = 0 then
begin
Exit;
end;
for I := 0 to WebBrowser.OleObject.Document.forms.Length - 1 do
begin
FormItem := WebBrowser.OleObject.Document.forms.Item(I);
for j := 0 to FormItem.Length - 1 do
begin
try
if FormItem.Item(j).Src = Src then
begin
if Value = 'Click' then
FormItem.Item(j).Click
else
FormItem.Item(j).Value := Value;
Result := True;
end;
except
Exit;
end;
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
//заполняем поля на яндексе
WebBrowser.Navigate('http://mail.yandex.ru/');
ByName('login', 'uzver');
ByName('passwd', 'pas123');
ByImg('http://img.yandex.net/wmi/classic/static/7/i/tb/i24-new-msg.gif', 'Click'); //в результате этой функции произведёться клик по картинке с данным именем файла
end;
c нажатием кнопок всё немного посложнее, т.к. кнопки не вегда имеют имена.
Ну и конечно обязательно ложка дёгтя =)) разработчики из майкрософта сделали недоступной функцию SetVal для полей типа file т.е. им нельзя задать значение... вот такое вот западло, так что письмо с аттачем подобным образом не отправишь :'(
Зачем такие извращения ?
все тебе пишут , используй Post ...
Зачем такие извращения ?
все тебе пишут , используй Post ...
какие извращения? С постом я уже разобрался...
просто вопрос был: "Как заполнить поле" вот я и выложил что то типа ответа...
чтобы если чё люди могли найти и посмотреть.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot