Pruebas de selenio sin navegador


Uso Selenio RC para las pruebas. Ahora para realizar una prueba de carga, quiero ejecutar casos de prueba paralelos. ¿Hay alguna forma de ejecutarlos sin abrir un navegador?

Author: Stéphane Bruckert, 2011-09-29

4 answers

Para configurar en Centos (hacer toda la instalación como root)

Instalar pip Descargar https://bootstrap.pypa.io/get-pip.py

python get-pip.py

Instalación de selenium Si tiene pip en su sistema, simplemente puede instalar o actualizar los enlaces de Python: pip install-U selenium

Alternativamente, puede descargar la distribución de origen desde PyPI (por ejemplo, selenium-2.53.1.alquitrán.gz), desarchivarlo, y ejecutar:

python setup.py install

Instale el programa: pyvirtualdisplay

pip install pyvirtualdisplay

yum install Xvfb libXfont Xorg

Entonces modifique su script para agregar las líneas en negrita dentro de * * y * *

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

Class 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
Author: Derek Lu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-15 20:02:31

Sí. Simplemente instala PhantomJS.

Entonces, cambia esta línea:

driver = webdriver.Firefox()

A:

driver = webdriver.PhantomJS()

El resto de su código no tendrá que ser cambiado y no se abrirá ningún navegador.


Para propósitos de depuración, usa driver.save_screenshot('screen.png') en diferentes pasos de tu código o simplemente vuelve a Firefox:

if os.getenv("environment") == "production":
    driver = webdriver.PhantomJS()
else:
    driver = webdriver.Firefox()
 48
Author: Stéphane Bruckert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-28 23:40:02

Puede ejecutar Selenium headless, eche un vistazo a esta pregunta/respuesta: ¿Es posible ocultar el navegador en Selenium RC?

Especialmente para las pruebas de carga de rendimiento, debe echar un vistazo a Apache JMeter .

 6
Author: Dag,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:09:42

Siga siempre la Documentación. Esto es lo que selenium doc dice. Proporciona un jar independiente.

  • Descargue el jar independiente. Y ejecutarlo con comando

    java -jar selenium-server-standalone.jar
    
  • Ahora verá un servidor stanalone iniciado.

  • Ahora configure su webdriver como abajo y la parte rest será como es.

    driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities={'browserName': 'htmlunit', 'version': '2', 'javascriptEnabled': True})
    
  • El código de resumen será como.

    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
Author: Vikash Singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-23 08:53:59