Testing with Selenium
Python for frontends :P
Annotation: This is my first contact with selenium :)
¿Qué es Selenium?
Selenium es un paquete de python para automatizar pruebas permitiendo simular las interacciones que realizan los usuarios en el navegador (browser).
Nació en el 2004, la versión 1 era conocida como Selenium RC (Remote Control), la versión 2 es conocida como Selenium Webdriver.
Instalación
La instalación como cualquier otro paquete de python se realiza con pip
pip install selenium
Selenium Docker
Para usar selenium en la configuración con docker es necesario usar las siguientes imagenes:
selenium/standalone-chrome:2.53.0
selenium/standalone-firefox:2.53.0
Selenium
docker-compose
selenium:
image: selenium/standalone-chrome:2.53.0
container_name: <nombre>
environment:
JAVA_OPTS: -Djava.security.egd=file:/dev/./urandom
volumes:
- /dev/shm:/dev/shm
- ../..:/app
ports:
- "4444:4444"
networks:
<network name>:
aliases:
- <nombre>
Primer Test
from django.test import TestCase
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
class SeleniumTest(TestCase):
def setUp(self):
self.browser = webdriver.Remote(
command_executor='<a class="linkclass" href="http://gollum23-selenium:4444/wd/hub">http://gollum23-selenium:4444/wd/hub</a>',
desired_capabilities=DesiredCapabilities.CHROME
)
def tearDown(self):
driver = self.browser
driver.quit()
def test_google_site(self):
driver = self.browser
driver.get("<a class="linkclass" href="http://gollum23-django:8010/admin/login">http://gollum23-django:8010/admin/login</a>")
self.assertIn('Log in', driver.title)
driver.close()
Segundo Test
from django.test import TestCase
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.common.keys import Keys
class SeleniumTest(TestCase):
def setUp(self):
self.browser = webdriver.Remote(
command_executor='http://gollum23-selenium:4444/wd/hub',
desired_capabilities=DesiredCapabilities.CHROME
)
def tearDown(self):
driver = self.browser
driver.quit()
def test_admin_login_fail(self):
driver = self.browser
driver.get("http://gollum23-django:8010/admin/login")
username_field = driver.find_element_by_id('id_username')
password_field = driver.find_element_by_id('id_password')
username_field.send_keys('gollum23')
password_field.send_keys('platzi2016', Keys.ENTER)
self.assertNotEqual('Site administration',
driver.find_element_by_tag_name('title'))
driver.close(
Tips
- Selenium usa los mismos asserts disponibles en unnittesting y django test.
Buscar elementos
Por id
self.browser.find_element_by_id('id')
self.browser.find_elements_by_id('id')
Por name
self.browser.find_element_by_name('name')
self.browser.find_elements_by_name('name')
Por clase
self.browser.find_element_by_class_name('name')
self.browser.find_elements_by_class_name('name')
Por xpath
self.browser.find_element_by_xpath('//form[0]/div[0]/input[0]')
¿Preguntas?
Testing with Selenium
By gollum23
Testing with Selenium
- 447