Jak w temacie co zrobić żeby w webbrowserze bot kliknął na submita z określonym valuem... [wstyd]
jesli masz metode get to robisz Webbrowser1.Navigate blah.pl/skrypt.php?zmienna=zz&zmienna2=yy
jesli post to nie pamietam ale wystarczylo poszukac..
W tym problem ze to jest post ;) a nie get....
P.S
Myślisz że nie szukałem ?
Tą strone ktoś dawał niby za rozwiązeni problemu ale ona nie działa http://4programmers.net/faq.php?id=236
i znalazłem jeszcze to
http://www.swissdelphicenter.ch/torry/showcode.php?id=1645
ale to jest na zdjęcie więc mi się nie przyda
szukałem w faq i nie znalazłem ...;(
Nie prosciej naglowki spreparowac samemu? Rzut okiem na RFC tylko.
Krótko :
nie prościej...
Ludzie wiecie jak to zrobić, nie mówcie tylko że delphi nie może poradzić sobie z submitem na stronie ;)
o to drugie tylko że to nie działa ;(...
Tylko chodzi mi oto z submitem, czyli logowaniem ...
doc := webbrowser1.Documnt as IHTMLDocument2;
klik:= doc.all.item('Submit',0) as IHTMLElemnent;
p.s
to sam znalazłem....
uses MSHTML;
var
dwww:IHTMLdocument3;
submit:IHTMLInputElement;
begin
dwww:=WebBrowser1.Document as IHTMLDocument3;
if assigned(dwww) then
submit:=dwww.GetElementByName('NazwaSubmita').Item(0,'') as IHTMLInputElement;
if assigned(submit) then
submit.form.submit;
end;
Mogą być błędy bo pisałem bez Delphi, ale powinieneś dojść do tego.
BTW. również problem z modułem MSHTML. Jak ktoś mógł by pomóc :)
http://4programmers.net/Forum/viewtopic.php?id=114761
W tym problem że ten submit nie ma nazwy tylko value ;(
jest jakieś na to rozwiązanie ?!....
Bardzo mi na tym zależy... i nie miejcie mnie za nooba co nie szuka zanim coś pisze....
przeszukałem sporo.... znalazłem coś takiego do sprawdzania value...., do klikania Submita, ale jako obrazka.... i to też z 'name'.... :(
Na tym forum znalazłem jeden post z czymś co trzeba było by pokombinować ;(
var
klik: IHTMLElement;
doc: IHTMLdocument2;
begin
doc := webbrowser1.Documnt as IHTMLDocument2;
klik:= doc.all.item('Submit',0) as IHTMLElement;
klik.click;
end;
Ale jakoś nie chce działać chociaż na stronie jest tylko jeden submit.... :( może cos z tą cyfrą 0 by trzebabylo pokominowac ale nie wiem jak ;(
Z góry dzięki....
To chociaż może ten submit ma id?
Na złość nie ma ID :()....
Trzymaj źródełko ;-) może coś wykombinujesz ;D
<input value="Ok" type="submit">
To kurcze zna ktoś rozwiązanie...
ja jak pisałem w autoicie to jakoś za pomoca kolekcji to robiełem
$oForm = _IEFormGetCollection ($oIE, 0)
_IEFormSubmit ($oForm)
i mi działało...
a w delphi nie wiem jak dostać się do jakiejś kolekcji ;(
/ If there is only one button, you can do something like:
WebBrowser1.OleObject.Document.forms.item(0).elements.item(0).click;
// This will do a click on the first element of the first <FORM>, where an
// element is either <INPUT>, <SELECT> or <TEXTAREA>.
// If there is more than one button, you can do something like:
procedure TForm1.Button1Click(Sender: TObject);
var
ovElements: OleVariant;
i: Integer;
begin
ovElements := WebBrowser1.OleObject.Document.forms.item(0).elements;
for i := 0 to (ovElements.Length - 1) do
if (ovElements.item(i).tagName = 'INPUT') and
(ovElements.item(i).type = 'SUBMIT') and
(ovElements.item(i).Value = 'Recent Charges') then
ovElements.item(i).Click;
end;
z Torry'ego
proste ?
mozesz wyciac te tagname, zostawic samo przyrownywanie do submit (przycisk) i value jak chciales, a jezeli na stronie jest tylko jeden przycisk formy to kod z samej gory...
Dzięki ale jakoś nie chce działać :(...
nie wiem czemu...
ustawiłem jeden przycisk na navigate.. zeby strone tą co che ładował a drugi na ten kod
i próbowałem obydwa... żaden nie działa
gdy ładuje strone i klikam na drugi przycisk to nic się nie dzieje ;(
Dzięki wszystkim za pomoc <ort>nareście </ort>działa ;) :)
Ja szukałem pod hasłem Submit a nie button :( debil ze mnie...
I uważajcie na
(ovElements.item(i).type = 'SUBMIT')
Bo tu jest dużymi literami a <ort>umnie </ort>było małymi dlatego nie działało ;)
dzięki jeszcze raz
to najlepiej zrob sobie AnsiLowerCase czy jakos tak (nie mam Delphi wlaczonego) i po sprawie ;)