Comment laisser le navigateur ouvert même après la fin du script selenium ruby
Je suis à l'aide d'un script ruby avec le sélénium web-pilote, pour l'automatisation d'une page web de connexion. La question est, après le script terminé, il ferme le navigateur. Je veux garder le navigateur ouvert même après la fin du script. Est-il un moyen par lequel je peux garder navigateur ouvert après le test de faire autre chose avec la fenêtre du navigateur?
Je fais comme ça.
if browser == "Firefox"
driver = Selenium::WebDriver.for :firefox
end
if stack == "example.com"
driver.get "http://www.example.com/tests/
end
element = driver.find_element :name => "email"
element.clear
element.send_keys username
element = driver.find_element :name => "password"
element.clear
element.send_keys password
element = driver.find_element :name => "commit"
element.submit
===================================================
source d'informationauteur Anindya Sharma
Vous devez vous connecter pour publier un commentaire.
Je n'ai jamais réellement essayé d'utiliser
selenium-webdriver
dans un script autonome comme ça, mais j'ai eu le même problème à l'aide deselenium-webdriver
dans le contexte decapybara
/cucumber
.Regardant le code source pour
capybara
j'ai trouvé ce crochet explicitement la ferme le navigateur après votre script est terminé. Si vous êtes pas à l'aide deselenium-webdriver
aveccapybara
alors ce pourrait ne pas être utile, mais il a été utile pour moi...gems/capybara-1.1.1/lib/capybara/selenium/driver.rb
enregistre unat_exit
crochet, qui appellequit
sur le navigateur d'objet:Vous devriez être en mesure de singe-patch le
quit
méthode afin qu'elle ne fait rien, comme suit:Remarque: Si vous utilisez
Selenium::WebDriver.for :chrome
etchromedriver
-- qui vous ne sont pas, mais d'autres personnes pourraient être -- j'ai remarqué qu'il tue aussi les
chromedriver
processus, et dès que le "service" est tué, le Chrome navigateur processus qui a été connecté à elle aussi se ferme.J'ai donc dû également empêcher que les processus de service à partir de l'arrêt, comme suit:
Il y avait un autre problème que j'ai rencontré, qui probablement ne vous touchent pas, sauf si vous utilisez ce pilote avec concombre... Même après que je l'ai eu pour laisser le navigateur ouvert, il serait laissé ouvert sur le "about:blank". Il ressemble à ce qui est déclenchée par ce crochet:
gems/capybara-1.1.1/lib/capybara/concombre.rb:
Qui appelle gems/capybara-1.1.1/lib/capybara/session.rb:70: "reset!'"
Qui appelle gems/capybara-1.1.1/lib/capybara/selenium/pilote.rb:80: "reset!'":
Et j'ai résolu avec un autre singe-patch:
C'est le code qui a fonctionné pour moi avec le Capybara
C'est un monkey patching de ce que j'ai trouvé dans gems/capybara-1.1.2/lib/capybara/selenium/pilote.rb
J'ai juste ajouté le met et l'obtient lignes. Sélénium::WebDriver::Pilote me faisait pas trouvé d'erreur probablement parce que je suis en sélénium de l'intérieur capybara.
C'est utile pour voir ce qui est le code qui a généré une erreur, mais il ya un inconvénient: le navigateur s'arrête-delà de la dernière page et affiche un écran vide. Je dois cliquer sur le bouton retour pour accéder à la page avec l'erreur qui pourrait ne pas toujours travailler. Quelqu'un sait pourquoi le navigateur charge qu'à vide de la page et de me faire gagner du temps à creuser dans le capybara code? Merci!
Un rapide hack qui a fonctionné pour moi:
sommeil(9000)
dans votre test vous donne une bonne quantité de temps à jouer avec le navigateur avant que le conducteur ne ferme.
Si vous exécutez le test avec les options de débogage et de déposer un débogueur en ligne à la fin, il doit laisser le navigateur ouvert. Regardez les ruby-debug gem. Il peut également être utile de vérifier ce Railscast sur Pry.
Voici quelques extrait de code en Python:
Mettre ceci à la fin de votre script, va quitter les fenêtres de navigateur ouvertes et se termine le script quand il est fermé manuellement (nécessite certaines importations au début):
C'est en grande partie ce que les autres commentateurs l'ont déjà dit sur le remplacement de quitter le pilote, mais voici le code simplifié j'ai fini par utiliser un autonome Capybara script:
En supposant que vous avez un serveur web qui tourne sur localhost:3000, cela permettra de lancer Firefox, accédez à l'URL et quitter la fenêtre du navigateur ouverte.
Ce framework de test que vous utilisez?
Généralement votre framework de test a une sorte de
setup
etteardown
méthodes que vous pouvez définir qui vous permet de lancer le navigateurdans la méthode de configuration, et de détruire le navigateur
dans le démontage.
Mettre juste un peu de logique autour de la destruction partie de vos scripts à seulement détruire le navigateur quand vous le souhaitez.