nico8888
Messages postés6Date d'inscriptiondimanche 5 août 2007StatutMembreDernière intervention13 août 2007
-
8 août 2007 à 21:08
nico8888
Messages postés6Date d'inscriptiondimanche 5 août 2007StatutMembreDernière intervention13 août 2007
-
10 août 2007 à 14:30
Bonjours à tous,
Voila j'ai récupéré une partie d'un code qui est sensé repérer puis sélectionner un mot dans une page web ( ici le mot images de google) puis cliquer dessus. Je l'ai essayé chez moi, donc avec un WebBrowser et 2 boutons mais il ne fonctionne pas, après plusieurs heures de recherche en vain, je décide de m'en remettre à vous.
merci d'avance à tous les passionnés de delphi.
procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.Navigate('www.google.fr')
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i : Integer;
begin
for i:=0to Webbrowser1.OleObject.Document.anchors.Length-1do begin
if Webbrowser1.OleObject.Document.anchors.Item(i).InnerText = 'Images'then
sylvunix
Messages postés93Date d'inscriptionmardi 11 avril 2006StatutMembreDernière intervention 4 mars 2009 9 août 2007 à 13:40
Voici une solution que j'ai testé ...
uses ..., MSHTML, ActiveX, ComObj;
.../...
procedure TForm1.Button2Click(Sender: TObject);
const
texteRecherche = 'Images';
var
iDocument: IHTMLDocument2;
iElement: IHTMLElement2;
iElementCollection: IHTMLElementCollection ;
iDomNode: IHTMLDOMNode;
iDispatchCollection, iDispatchAttribute: IDispatch;
iAttributesCollection: IHTMLAttributeCollection;
iDomAttribute: IHTMLDOMAttribute;
i, j: Integer;
v: OleVariant;
begin
iDocument := WebBrowser1.Document as IHTMLDocument2;
iElementCollection:= iDocument.Links;
for i := 0 to iElementCollection.Length-1 do
begin
iElement:= iElementCollection.Item(i,0) as IHTMLElement2;
iElement.QueryInterface(IID_IHTMLDOMNode, iDomNode);
iDispatchCollection := iDomNode.Attributes;
if iDispatchCollection <> nil then
begin
iDispatchCollection.QueryInterface(IID_IHTMLAttributeCollection, iAttributesCollection);
for j := 0 to iAttributesCollection.Length-1 do
begin
v := j;
iDispatchAttribute:=iAttributesCollection.Item(v);
iDispatchAttribute.QueryInterface(IID_IHTMLDOMAttribute ,iDomAttribute);
if iDomAttribute.Specified then
begin if (iDomAttribute.nodeName 'href') and (iElement.getAdjacentText('afterBegin') texteRecherche) then
WebBrowser1.Navigate(iDomAttribute.nodeValue);
end;
end;
end;
end;
end;
nico8888
Messages postés6Date d'inscriptiondimanche 5 août 2007StatutMembreDernière intervention13 août 2007 10 août 2007 à 14:30
Je suis encore bloqué, car le mot de la page HTML que je voulais repérer puis valider par un clic ne renvoi pas à une URL de type (exemple site google)
non le mot que je veux clicker agit et modifie la page html sans changer l'URL
exemple:
[# Choix au
hasard]
en fait ça rempli une grille de type LOTO qui est à la base vide de manière aléatoire
Donc je te remercie sylvunix ton code marche sans aucun problème et m'a appris mais j'avais mal analysé le code source de la page html sur laquelle je souhaite agir.
Au final je suis de nouveau bloqué.
je pense que mon pb se situe à la fin de ton code sylvunix
je pense que WebBrowser1.Navigate est mon pb car je ne souhaite pas me diriger sur une URL mais modifer onclick ="return(numbersRandomSelect()) cette fameuse page.
j'espère ne pas avoir été trop compliqué dans mes explications.
Merci à vous.