web-dev-qa-db-fra.com

Tests de sélénium sans navigateur

J'utilise Selenium RC pour les tests. Maintenant, pour effectuer un test de charge, je veux exécuter des cas de test parallèles . Est-il possible de les exécuter sans ouvrir de navigateur?

32
Mohyt

Pour configurer sur Centos (effectuez toutes les installations en tant que root)

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

python get-pip.py

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

Vous pouvez également télécharger la distribution source à partir de PyPI (par exemple, Selenium-2.53.1.tar.gz), la désarchiver et exécuter:

python setup.py install

installer le programme: pyvirtualdisplay

pip install pyvirtualdisplay

yum install Xvfb libXfont Xorg

Puis modifiez votre script pour ajouter les lignes en gras entre ** 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

classe SeleniumDemo (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)
5
Derek Lu

Vous pouvez utiliser Selenium sans tête, jetez un oeil à cette question/réponse: Est-il possible de cacher le navigateur dans Selenium RC?

Pour les tests de performances, vous devriez jeter un coup d'œil à Apache JMeter .

6
Dag

essaye ça

op = webdriver.ChromeOptions()
op.add_argument('headless')
driver = webdriver.Chrome(options=op)
0
coder

Suivez toujours la documentation. Voici ce que Selenium doc dit. Il fournit un pot autonome

  • Téléchargez le pot autonome. Et lancez-le avec commande 

    Java -jar Selenium-server-standalone.jar
    
  • Vous allez maintenant voir un serveur stanalone démarré.

  • Maintenant, configurez votre lecteur Web comme ci-dessous et la partie restante sera telle quelle.

    driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities={'browserName': 'htmlunit', 'version': '2', 'javascriptEnabled': True})
    
  • Le code récapitulatif 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()
    
0
Vikash Singh

C'est possible, mais pas avec le pilote firefox/chrome/etc. standard.

Vous devez installer PhantomJS. Attribuez simplement votre WebDriver à une instance du pilote phantomJS:

driver = webdriver.PhantomJS()

Si vous exécutez votre code maintenant, aucune fenêtre de navigateur ne sera ouverte.

0
Swetha Reddy