Je lance le serveur Selenium avec un script bash et comme vous pouvez le voir sur les horodatages du journal ci-dessous, il faut environ 32 secondes pour que la chose soit entièrement en ligne:
Feb 28, 2012 10:19:02 PM org.openqa.grid.selenium.GridLauncher main
INFO: Launching a standalone server
22:19:02.835 INFO - Java: Sun Microsystems Inc. 20.0-b11
22:19:02.836 INFO - OS: Linux 2.6.32-220.4.1.el6.x86_64 amd64
22:19:02.852 INFO - v2.19.0, with Core v2.19.0. Built from revision 15849
22:19:02.988 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub
22:19:02.990 INFO - Version Jetty/5.1.x
22:19:02.992 INFO - Started HttpContext[/selenium-server/driver,/selenium-server/driver]
22:19:02.993 INFO - Started HttpContext[/selenium-server,/selenium-server]
22:19:02.993 INFO - Started HttpContext[/,/]
22:19:34.552 INFO - Started org.openqa.jetty.jetty.servlet.ServletHandler@488e32e7
22:19:34.552 INFO - Started HttpContext[/wd,/wd]
22:19:34.555 INFO - Started SocketListener on 0.0.0.0:4444
22:19:34.555 INFO - Started org.openqa.jetty.jetty.Server@7d29f3b5
Au lieu d'utiliser une commande "sleep 32" après le démarrage du serveur (pour retarder le script avant de continuer), j'aimerais que mon script bash attende qu'il voit la chaîne "Started SocketListener", puis continue. Est-ce possible?
sed
commande modifiée qui écrit suffisamment dans le journal pour forcer un vidage (?), La lance immédiatement (je l'ai testée), mais je pense que cela a la possibilité que les données insérées soient entrecoupées d'une ligne de session au sélénium. .$
adresse, par exemple). Je n'ai pas vu cela se produire dans mes tests (avec GNU sed). Comment avez-vous exposé exactement le bug, sur quel système d'exploitation?C'est un peu plus difficile dans un script shell direct, mais c'est ce que j'utilisais depuis un certain temps pour tomcat et oc4j:
Le
alarm
gérera tout accrochage potentiel où Tomcat a échoué. Le nombre de lignes à partir de l'EOF est réglable (à partir d'un fichier de configuration).J'ai finalement déplacé le tout en python; alors qu'il est un peu plus long, il est un peu plus efficace:
la source
Vous pouvez l'ajouter à votre script pour implémenter la pause:
Il utilise le module perl File :: Tail pour se comporter comme
tail -f logfile | grep Started SocketListener
.Remplacez / var / log / message par le fichier journal approprié. Notez qu'il se bloquera indéfiniment si "Démarré SocketListener" n'apparaît jamais.
la source
Vous devriez peut-être utiliser un délai d'attente au lieu d'attendre indéfiniment.
La fonction bash ci-dessous se bloquera jusqu'à ce que le terme de recherche donné apparaisse ou qu'un délai donné soit atteint.
Le statut de sortie sera 0 si la chaîne est trouvée dans le délai.
Peut-être que le fichier journal n'existe pas encore juste après le lancement de Selenium. Dans ce cas, vous devez attendre qu'il apparaisse avant de rechercher la chaîne:
Voici comment vous pouvez l'utiliser:
la source