Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

Interaction avec un navigateur


Sujet :

Lazarus Pascal

  1. #1
    Membre habitué
    Interaction avec un navigateur
    Bonjour.

    Est-il possible d'interagir avec un navigateur (ou le navigateur par défaut) et lui faire exécuter une commande par programmation ?

    Un exemple pour être plus précis : sous W10, j'aimerais pouvoir dans mon programme Lazarus demander à Chrome de vider son cache (équivalent de ce qui peut être fait en cliquant sur le bouton de menu, en choisissant paramètres puis "Effacer les données de navigation", en cochant uniquement la 3ème case "Images et fichiers en cache" et enfin en cliquant sur "Effacer les données").

    D'avance merci.

  2. #2
    Membre expert
    Salut dans l'absolue non, pas à ma connaissance, mais en lançant une ligne de commande (avec TProcess) c'est possible. Tu devras cependant adapter tes commandes en fonction du navigateur cf :
    https://stackoverflow.com/questions/...mmand-line-osx
    https://superuser.com/questions/3939.../920604#920604
    https://superuser.com/questions/5090...g-command-line

    A+
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  3. #3
    Expert confirmé
    hello,
    avec selenium et un webdriver ça serait possible.
    Selenium est un framework de test informatique développé en Java.
    Il permet d'interagir avec différents navigateurs web de même que le ferait un utilisateur de l'application. Il entre ainsi dans la catégorie des outils de test dynamique (à l'inverse des tests statiques qui ne nécessitent pas l'exécution du logiciel) facilitant le test fonctionnel.
    Il est associé à

    • Selenium IDE, extension Firefox, pour l'utiliser ;
    • Selenium WebDriver, successeur de Selenium Remote Control (RC) devenu depuis officiellement obsolète1. Il permet d'écrire des tests automatisés en différents langages (PHP, Python, Ruby, .NET, Perl et Java).


    Comme on peut le constater il n'y a pas le langage pascal dans les langages proposés. Je suis tombé récemment sur le github d' Eric Wang avec le titre du projet :
    Webdriver For Delphi lazarus.
    Cela semble bien avancé, le seul souci, c'est que la partie Lazarus semble avoir été abandonnée en cours de route et donc le code ne doit fonctionner actuellement qu'avec Delphi.
    Si quelqu'un avait du temps à consacrer pour voir si il y a beaucoup de boulot pour faire fonctionner le code avec Lazarus ou si cela se révèle difficile.

    Voici un exemple de programmation avec W4D pour commander Chrome :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    procedure TestTWebDriver.TestExecuteScript;var
      xxx: string;
      FWD: TWebDriver;
    begin
      FWD :=TChromeDriver.Create(nil);
      FWD.Port :=6666;
      FWD.StartDriver('WebDriver\ChromeDriver.exe');
     
      FWD.Clear;
      FWD.NewSession;
      FWD.Set_Window_Size(1366, 768);
      FWD.Implicitly_Wait(3000);
      FWD.GetURL('https://passport.weibo.cn/signin/login');
      // FWD.ExecuteScript('document.getElementById("loginPassword").value="12121212"');
      // xxx := FWD.ExecuteScript('return document.title');
      xxx := FWD.ExecuteScript('return document.body.innerHTML');
      // Copie Ecran
      FWD.ScreenShot('..\temp.png');
    end;


    Ami calmant, J.P

    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  4. #4
    Membre habitué
    Bonjour.

    Les différents liens proposés m'ont permis de trouver l'emplacement du cache de Chrome sous W10 :
    C:\Users\Nom de l'utilisateur\AppData\Local\Google\Chrome\User Data\Default\Cache

    Je remarque certaines choses étonnantes :
    • J'ai (par exemple à l'instant) 1516 éléments dans ce répertoire mais un utilitaire appelé ChromeCacheView recense 7977 items
    • Si je demande à Chrome d'effacer les images et fichiers en cache, je tombe à 926 éléments et 6634. Quels sont les fichiers conservés ?
    • J'avais essayé d'effacer manuellement tout le contenu du répertoire. Les fichiers appelés index, data_0, data_1, data_2 et data_3 ont été conservés (a priori car ouverts dans Google Chrome). Suite à cela, les sites que je consulte habituellement s'affichaient mal, m'obligeant à les actualiser ... Pas essayé de tout effacer en fermant Chrome d'abord.

    En revanche, toujours pas trouvé comment faire ce que je voulais qui a priori me paraissait simple.

    PS : assez bluffé par cet utilitaire appelé ChromeCacheView (taille 145 ko !), si quelqu'un sait comment il réussit à trouver toutes ces infos ...

  5. #5
    Membre expert
    Salut

    tu ne doit pas avoir que dans le dossier "Default", et tu as aussi l'historique qui est mis en cache et tu as surement des sous-dossiers. De plus lorsque tu supprimes toutes les données du cache, il faut mieux fermer le navigateur. C'est d'ailleurs ce que demande la majorité des utilitaires de nettoyage que je connaissent. Ensuite pour les infos, il doit surement y avoir un fichier répertoriant ce que tu vois dans ChromeCacheView à mon avis. Faudrait que tu recherches sur le site de dev de chrome pour obtenir plus d'infos

    A+
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP