2011-09-29 16 views
27

Używam Selenium RC do testowania. Teraz, aby wykonać test obciążenia, chcę uruchomić równoległe przypadki testowe. Czy istnieje sposób na ich uruchomienie bez otwierania przeglądarki?Testowanie Selenium bez przeglądarki

+0

możliwe duplikat [Czy to możliwe, aby ukryć przeglądarkę w selen RC?] (Http://stackoverflow.com/questions/1418082/is-it-possible-to-hide-the- browser-in-selenium-rc) –

Odpowiedz

4

Aby skonfigurować na CentOS (wykonać całą instalację jako root)

Zainstaluj pip Pobierz https://bootstrap.pypa.io/get-pip.py

python get-pip.py 

Instalacja selenu Jeśli masz zainstalowany system, możesz po prostu zainstalować lub zaktualizować wiązania Pythona: instalacja pip -U selen

Alternatywnie, możesz pobrać dystrybucję źródłową z PyPI (np. selen-2.53.1.tar.gz), rozpakowywanie go i uruchom:

python setup.py install 

zainstalować program: pyvirtualdisplay

pip install pyvirtualdisplay 

yum install Xvfb libXfont Xorg 

następnie zmodyfikować skrypt, aby dodać pogrubienie linii wewnątrz ** i * *

**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 

klasa 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) 
43

Tak. Tylko install PhantomJS.

Następnie zmień tę linię:

driver = webdriver.Firefox()

do:

driver = webdriver.PhantomJS()

Reszta kodu nie będzie musiał być zmieniony i nie przeglądarka otworzy.


Dla celów debugowania, użyj driver.save_screenshot('screen.png') na różnych etapach swojego kodu lub po prostu wrócić do Firefoksa ponownie:

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

to powinno być odpowiedź –

+0

Najprostsze odpowiedzi są zazwyczaj najlepsze! Dziękuję Ci. – hod

0

Zawsze postępuj zgodnie z dokumentacją. Oto, co mówi selenium doc. Zapewnia on standalone jar.

  • Pobierz samodzielny słoik. Uruchom go poleceniem

    java -jar selenium-server-standalone.jar 
    
  • Teraz pojawi się serwer z przełącznikiem stanów.

  • Teraz skonfiguruj webdrivera tak jak poniżej, a część odpoczynku będzie taka, jaka jest.

    driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities={'browserName': 'htmlunit', 'version': '2', 'javascriptEnabled': True}) 
    
  • Podsumowanie kodu będzie podobne.

    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() 
    
Powiązane problemy