Selection d'un mot dans une page web

Résolu
Signaler
Messages postés
6
Date d'inscription
dimanche 5 août 2007
Statut
Membre
Dernière intervention
13 août 2007
-
Messages postés
6
Date d'inscription
dimanche 5 août 2007
Statut
Membre
Dernière intervention
13 août 2007
-
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

              Webbrowser1.OleObject.Document.anchors.Item(i).Click  ;

    end ;

  end;

end.

4 réponses

Messages postés
93
Date d'inscription
mardi 11 avril 2006
Statut
Membre
Dernière intervention
4 mars 2009

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;
Messages postés
6
Date d'inscription
dimanche 5 août 2007
Statut
Membre
Dernière intervention
13 août 2007

 Merci beaucoup sylvunix pour ton code je viens de le tester et il marche à merveille.
C'est vraiment super sympat de ta par.

Un grand Mercie.
Messages postés
6
Date d'inscription
dimanche 5 août 2007
Statut
Membre
Dernière intervention
13 août 2007

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)

<href= "http://images.google.fr/imghp?ie=UTF-8&amp;oe=UTF-8&amp;hl=fr&amp;tab=wi"onclick="return qs(this)">Images

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

WebBrowser1.Navigate(iDomAttribute.nodeValue);
        end;
      end;
   end;
  end;
end;

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.
Messages postés
6
Date d'inscription
dimanche 5 août 2007
Statut
Membre
Dernière intervention
13 août 2007

Merci beaucoup sylvunix pour ton code je vais le tester tous de suite.

Mercie.