27

J'utilise Selenium RC pour les tests. Maintenant, pour effectuer un test de charge, je veux exécuter des cas de test en parallèle. Y at-il un moyen de les exécuter sans ouvrir un navigateur?Tests sélénium sans navigateur

+0

double possible de [Est-il possible de cacher le navigateur Selenium RC?] (Http://stackoverflow.com/questions/1418082/is-it-possible-to-hide-the- browser-in-selenium-rc) –

Répondre

4

Pour mettre en place sur CentOS (faire toutes les installations en tant que root)

Installez pip Télécharger https://bootstrap.pypa.io/get-pip.py

python get-pip.py 

Installation du sélénium Si vous avez pip sur votre système, vous pouvez simplement installer ou mettre à niveau les liaisons Python: Pip installer le sélénium -U

Alternativement, vous pouvez télécharger la distribution source de PyPI (par exemple sélénium 2.53.1.tar.gz), décompressez, et lancez:

python setup.py install 

installer le programme: pyvirtualdisplay

pip install pyvirtualdisplay 

yum install Xvfb libXfont Xorg 

Modifiez ensuite votre script pour ajouter les lignes en gras à l'intérieur ** et * *

**from pyvirtualdisplay import Display** 
from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.support.ui import Select 
from selenium.common.exceptions import NoSuchElementException 
from selenium.common.exceptions import NoAlertPresentException 
import unittest, time, re 

SeleniumDemo classe (unittest.TestCase):

def setUp(self): 
    **self.display = Display(visible=0, size=(800, 600)) 
    self.display.start()** 
    self.driver = webdriver.Firefox() 
    self.driver.implicitly_wait(30) 
    self.base_url = "http://www.soastastore.com/" 
    self.verificationErrors = [] 
    self.accept_next_alert = True 
…… 
def tearDown(self):`enter code here` 
    self.driver.quit() 
    ***self.display.stop()*** 
    self.assertEqual([], self.verificationErrors) 
6

Vous pouvez exécuter sans tête Sélénium, jetez un oeil à cette question/réponse: Is it possible to hide the browser in Selenium RC?

Surtout pour les tests de charge de la performance, vous devriez jeter un oeil à Apache JMeter.

+0

J'ai déjà essayé Apache JMeter pour le test de charge des applications GWT. Mais ce n'est pas tout à fait réussi. – Mohyt

43

Oui. Juste install PhantomJS.

Ensuite, changer cette ligne:

driver = webdriver.Firefox()

à:

driver = webdriver.PhantomJS()

Le reste de votre code ne sera pas besoin d'être changé et aucun navigateur ouvrira.


Pour des fins de débogage, utilisez driver.save_screenshot('screen.png') à différentes étapes de votre code ou zappent revenir à Firefox à nouveau:

if os.getenv("environment") == "production": 
    driver = webdriver.PhantomJS() 
else: 
    driver = webdriver.Firefox() 
+2

cela devrait être la réponse –

+0

Les réponses les plus simples sont généralement les meilleures! Je vous remercie. – hod

0

Suivez toujours la documentation. Voici ce que dit selenium doc. Il fournit un standalone jar.

  • Téléchargez le pot autonome. Et l'exécuter avec la commande

    java -jar selenium-server-standalone.jar 
    
  • Maintenant, vous verrez un serveur stanalone a commencé.

  • Maintenant, configurez votre pilote web comme ci-dessous et la partie de repos sera comme elle est.

    driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities={'browserName': 'htmlunit', 'version': '2', 'javascriptEnabled': True}) 
    
  • Le code de résumé sera comme.

    from selenium import webdriver 
    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 
    from selenium.webdriver.common.keys import Keys 
    driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub', 
    desired_capabilities={'browserName': 'htmlunit', 'version': '2', 
    'javascriptEnabled': True}) 
    driver.get("http://www.python.org") 
    assert "Python" in driver.title 
    elem = driver.find_element_by_name("q") 
    elem.clear() 
    elem.send_keys("pycon") 
    elem.send_keys(Keys.RETURN) 
    assert "No results found." not in driver.page_source 
    driver.close() 
    
Questions connexes