Quel langage pour intérroger des pages web?

Quel langage pour intérroger des pages web? - Divers - Programmation

Marsh Posté le 04-09-2015 à 13:54:04    

Bonjour,
 
Je suis aujourd'hui à la recherche d'un langage me permettant de tester si une page web répond bien, et dans certains cas regarder sur la page si un champ a une valeur particulière.
Aujourd'hui ces étapes sont réalisées manuellement, ceci prend du temps et n'apporte aucune valeur ajoutée.
 
Je "maitrise" le VBA, et j'avais précédemment réalisé une fonction permettant d'injecter du contenu sur une page html, en VBA, en analysant l'arborescence de la page.  
Cependant, je suis certain qu'il existe des langages plus appropriés pour réaliser ce type de manipulations.
 
J'avais vu quelques langages utilisant une syntaxe SQL pour interroger les différentes balises avec les noeuds parents et enfants, mais je ne me souviens plus de leurs noms.
 
Si quelqu'un a un langage à me proposer me permettant de réaliser ceci, je suis preneur! Et si en prime il y a quelques exemples, ça serait merveilleux :)
(et pour abuser, si possible quelque chose de "léger" niveau installeur, que je puisse limite coder avec notepad++, car les usines genre Eclipse, j'aime pas :3)
 
 
Merci.

Reply

Marsh Posté le 04-09-2015 à 13:54:04   

Reply

Marsh Posté le 04-09-2015 à 15:03:01    

Selenium est un outil complet qui permet d'automatiser des tests d'IHM (un plugin simple à utiliser pour Firefox existe). C'est très complet.
 
Casper.js propose une approche différente, programmable à l'aide de JavaScript. Je l'apprécie beaucoup.


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 04-09-2015 à 17:12:16    

Tu peux tester les libs PHP du genre Snoopy ou SimpleTest. SimpleTest permet de faire des tests unitaires et d'intégration ;)
 
http://simpletest.org/fr/start-testing.html
 
Avec, tu peux manipuler des formulaires web, vérifier la présence d'une chaîne de caractère dans la page, te connecter à une BD (enfin ça, c'est PHP de base)... Moi, je m'en suis servi pour faire du développement piloté par les tests (test driven).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 07-09-2015 à 13:18:57    

the_skwi a écrit :

Bonjour,

 

Je suis aujourd'hui à la recherche d'un langage me permettant de tester si une page web répond bien,

 

Une simple librairie http peut faire l'affaire. Ou cURL ou wget (sous linux).

 
the_skwi a écrit :


et dans certains cas regarder sur la page si un champ a une valeur particulière.

 

Une librairie type mechanize (http://wwwsearch.sourceforge.net/mechanize/ pour python et perl) ou simpledrom (http://simplehtmldom.sourceforge.net/ pour php) peut venir à bout des cas difficiles.

 

D'expérience pour faire du monitoring, la simple recherche d'une chaîne de caractère sans parsing html est très souvent suffisant.

 
the_skwi a écrit :


Aujourd'hui ces étapes sont réalisées manuellement, ceci prend du temps et n'apporte aucune valeur ajoutée.

 

Je "maitrise" le VBA, et j'avais précédemment réalisé une fonction permettant d'injecter du contenu sur une page html, en VBA, en analysant l'arborescence de la page.
Cependant, je suis certain qu'il existe des langages plus appropriés pour réaliser ce type de manipulations.

 

J'avais vu quelques langages utilisant une syntaxe SQL pour interroger les différentes balises avec les noeuds parents et enfants, mais je ne me souviens plus de leurs noms.

 

Si quelqu'un a un langage à me proposer me permettant de réaliser ceci, je suis preneur! Et si en prime il y a quelques exemples, ça serait merveilleux :)
(et pour abuser, si possible quelque chose de "léger" niveau installeur, que je puisse limite coder avec notepad++, car les usines genre Eclipse, j'aime pas :3)

 


Merci.

 

Sur un serveur linux/unix, un script perl ou python lancé en crontab serait à mon sens la meilleure solution.

 

J'avais aussi réalisé un petit parser en php qui récupérait les images d'un fil hfr y a pas si longtemps et les répertoriait dans une table. J'avais choisi le php car j'avais un hébergeur gratuit qui supportait le php et simpledom nécessitait un simple "include" sans installation particulière.

 

En gros la "trame" était:

 


Code :
  1. include ("../lib/simple_html_dom.php" );
  2. foreach($tab_cpt as $cpt) //pour toutes les pages à controler ...
  3. {
  4. echo "$url_de_base$cpt.htm"; //url de la page hfr à parser
  5. $html = file_get_html("$url_de_base$cpt.htm" );
  6. foreach($html->find('table') as $e)
  7. {
  8.  $poste=array();
  9.  $poste['page']=$cpt;
  10.  $poste['url']="";
  11.  $poste['posteur']="";
  12.  $poste['post']='';
  13.  if($e->class=="messagetable" )
  14.  {
  15.   $part1=$e->find("td" );
  16.   foreach ( $part1 as $p)
  17.   {
  18.    if ($p->class=="messCase1" )
  19.    {
  20.     $e2=$p->find("b" );
  21.     foreach ($e2 as $e3)
  22.     {
  23.      if ($e3->class=="s2" )
  24.      {
  25.       $auteur=str_replace("​","",$e3->innertext);
  26.       $poste['posteur']=$auteur;
  27.      }
  28.     }
  29.    }
  30.    else if ($p->class=="messCase2" )
  31.    {
  32.     //echo "messCase2";
  33.     $poste['post']="";
  34.     $part2=$p->find("div" );
  35.      foreach ( $part2 as $p)
  36.      {
  37.      if ($p->class=="toolbar" )
  38.      {
  39.       //echo "on recupere la date du post";
  40.       $e2=$p->find("div" );
  41.       foreach ($e2 as $e3)
  42.       {
  43.        if ($e3->class=="left" )
  44.        {
  45.         $tmp=preg_match_all("/(\d+)-(\d+)-(\d+)[^0123456789]*(\d+):(\d+):(\d+)/",$e3->innertext,$out);
  46.         if ($tmp)
  47.         {
  48.          $date_post=sprintf("%04d-%02d-%02d %02d:%02d:%02d ",$out[3][0],$out[2][0],$out[1][0],$out[4][0],$out[5][0],$out[6][0]);
  49.          $poste['date_post']=$date_post;
  50.         }
  51.         //Post顬e 10-05-2011 ࠱2:52:59
  52.        }
  53.       }
  54.      }
  55.      else
  56.      {
  57.       $content = str_replace($baadchar,$goodchar,strtolower($p));
  58.       $poste['post'].=$content;
  59.       $images=$p->find("img" );
  60.       foreach( $images as $img)
  61.       {
  62.        $poste['url']=$img->src;
  63.        if (strstr($poste['url'],"forum-images.hardware.fr" )===FALSE)
  64.        {
  65.         $sqltest2="select * from images2 where `url`='".mysql_real_escape_string($poste['url'])."' and `date_post`='".mysql_real_escape_string($poste['date_post'])."'";
  66.         $recordstest2=select_records($sqltest2);
  67.         if (!$recordstest2)
  68.         {
  69.          $sqltest="select * from images2 where url='".mysql_real_escape_string($poste['url'])."'";
  70.          $recordstest=select_records($sqltest);
  71.          $poste['#date_insertion']='now()';
  72.          $poste['post']=nettoietag($poste['post']);
  73.          if (!$recordstest)
  74.          {
  75.           $poste['repost']=0;
  76.           insert_record("images2",$poste);
  77.          }
  78.          else
  79.          {
  80.           $poste['repost']=1;
  81.           insert_record("images2",$poste);
  82.          }
  83.         }
  84.        }
  85.       }
  86.      }
  87.      }
  88.      if (!isset($poste['repost']))
  89.      {
  90.       //post sans image
  91.       $poste['url']="";
  92.       $poste['repost']=2;
  93.       $poste['post']=nettoietag($poste['post']);
  94.       insert_record("images2",$poste);
  95.      }
  96.    }
  97.   }
  98.   echo "<br/><br/>";
  99.  }   
  100. }
  101. }


Message édité par philippe06 le 07-09-2015 à 13:19:43

---------------
Aimer les femmes intelligentes est un plaisir de pédéraste. (Charles Baudelaire) - Vous vulgarisez :o (Jean-Kevin Dubois)
Reply

Marsh Posté le 08-09-2015 à 09:41:24    

Merci pour vos réponses. J'ai oublié de préciser que je suis sur un poste Windows.
 
J'ai regardé côté Selenium en mode plugin firefox, ça semble faire l'affaire mais ça reste "basique". Un peu galère rien que pour vérifier une date. De plus c'est du séquentiel, c'est donc dommage de tester les différents liens les uns à la suite des autres au lieu de tout faire en simultané.
 
Je reviens sur ma décision de coder avec le bloc note, vu que je ne connais aucune fonction en javaScript ça serait pratique d'avoir un outil permettant de montrer les fonctions possibles :3

Reply

Marsh Posté le 08-09-2015 à 11:30:15    

Et SimpleTest, ça te branche pas ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 08-09-2015 à 13:35:43    

rufo a écrit :

Et SimpleTest, ça te branche pas ?


 
Oui et non :D
Oui car je préfèrerai développer dans un langage "propre", sur le plugin Selenium le code que j'ai ressemble à une succession de balises HTML, je ne peux pas (ou alors je n'ai pas trouvé comment) faire une belle fonction mais obligé de décomposer chaque étape. Exemple :

Code :
  1. <tr>
  2. <td>clickAndWait</td>
  3. <td>link=Services</td>
  4. <td></td>
  5. </tr>
  6. <tr>
  7. <td>storeEval</td>
  8. <td>tabJours=['Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Venderdi', 'Samedi','Dimanche'];</td>
  9. <td></td>
  10. </tr>
  11. <tr>
  12. <td>storeEval</td>
  13. <td>tabMois=['janvier', 'février', 'mars', 'avril', 'mai', 'juin','juillet','août','septembre','octobre','novembre','décembre'];</td>
  14. <td></td>
  15. </tr>
  16. <tr>
  17. <td>storeEval</td>
  18. <td>d=new Date();d=tabJours[d.getDay()-1]+&quot; &quot;+(&quot;0&quot; + d.getDate()).slice(-2)+&quot; &quot;+tabMois[d.getMonth()]+&quot; &quot;+d.getFullYear()</td>
  19. <td>realDate</td>
  20. </tr>
  21. <tr>
  22. <td>verifyText</td>
  23. <td>id=today</td>
  24. <td>${realDate}</td>
  25. </tr>


 
Et le non car je ne sais absolument pas comment "commencer". De plus je n'utiliserais même pas 1% des capacité de ce langage, c'est globalement pour simuler des clics sur une page et vérifier que la page s'affiche bien.
 
Si tu as un tuto pour expliquer ce que je dois installer sur mon poste et comment exécuter le shmilblick, je suis preneur! Je pourrai réaliser une solution plus "propre" et ça m'apprendra quelque chose.

Reply

Marsh Posté le 08-09-2015 à 14:05:19    

Pour la prise en main rapide de SimpletTest : http://www.simpletest.org/fr/start-testing.html
Je te suggère de regarder l'ex intitulé "Tester une page web" :whistle:  
 
Sinon, vu que tu connais VBA, tu peux regarder l'outil AutoIT ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 09-09-2015 à 11:49:13    

Je préfère apprendre un nouveau langage que de réutiliser du VBA.
 
Avec Selenium les actions de bases sont réalisées, mais je préfère aller plus loin. SimpleTest semble pas mal pour ça. Vu que je ne connais pas spécialement le PHP, ni les outils pour développer efficacement, si vous en avez je suis preneur.  
Pour l'instant je suis un tuto sur un autre site, j'vais avoir besoin de notepad++ pour le code, et WampServer pour tester.

Reply

Marsh Posté le 09-09-2015 à 15:36:36    

Notepad++ et Wampserver effectivement.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed