class SearchCases(unittest.TestCase): #las clases se definen con la palabra reservada CLASS def setUp(self): #METODO SUTUP:se ejecuta antes de cada prueba (Precondicion) self.driver = webdriver.Chrome('/home/daniel/workspaces/fogar-testing/Automation - Clases/chromedriver') self.driver.get('http://automationpractice.com/index.php') self.driver.implicitly_wait(5) self.indexPage = PageIndex(self.driver) # crea el objeto del tipo PageItems= indexPage self.itemsPage = PageItems(self.driver) #self.driver.maximize_window() #maximi ventana #self.driver.set_window_size(800, 600) #tamaño de ventana def test_search_no_elements(self): #los metodos se definen con la palabra reservada DEF self.indexPage.search('hola') self.assertEqual(self.itemsPage.return_no_element_text(), "No results were found for your search \"hola\"") def test_search_find_dresses(self): self.indexPage.search('dress') self.assertTrue('DRESS' in self.itemsPage.return_section_title()) def test_search_find_tshirts(self): self.indexPage.search('t-shirt') self.assertTrue('T-SHIRT' in self.itemsPage.return_section_title()) def test_selections(self): self.indexPage.search('t-shirt') self.itemsPage.select_by_text('Product Name: A to Z') time.sleep(3) def tearDown(self): #METODO TEARDOWN: Se ejecuta al terminar cada prueba (post condicio) self.driver.close() self.driver.quit()
class SearchCases(unittest.TestCase): def setUp(self): option = Options() option.add_argument('start-maximized') option.add_argument('incognito') #option.add_argument('--headless') self.driver = webdriver.Chrome(chrome_options=option) self.driver.get('http://automationpractice.com/index.php') self.driver.implicitly_wait(5) #self.driver.maximize_window() self.indexPage = PageIndex(self.driver) self.itemsPage = PageItems(self.driver) self.itemPage = PageItem(self.driver) def test_search_no_elements(self): self.indexPage.search('hola') self.assertEqual(self.itemsPage.return_no_element_text(), 'No results were found for your search "hola"') self.driver.save_screenshot('no_element.jpg') @unittest.skip('Not needed now') def test_search_find_dresses(self): self.indexPage.search('dress') self.assertTrue('DRESS' in self.itemsPage.return_section_title()) @unittest.skip('Not needed now') def test_search_find_tshirts(self): self.indexPage.search('t-shirt') self.assertTrue('T-SHIRT' in self.itemsPage.return_section_title()) @unittest.skip('Not needed now') def test_tarea(self): self.indexPage.search('t-shirt') self.itemsPage.click_orange_button() self.itemPage.enter_quantity('25') #self.itemPage.add_elements(3) @unittest.skip('Not needed now') def test_selections(self): self.indexPage.search('t-shirts') self.itemsPage.select_by_text('Product Name: A to Z') time.sleep(3) self.itemsPage.select_by_value('reference:asc') time.sleep(3) self.itemsPage.select_by_index(2) time.sleep(3) def tearDown(self): self.driver.close() self.driver.quit()
class SearchCases(unittest.TestCase): # Método que tiene las Precondiciones def setUp(self): # Clase XI, instanciamos la clase Options option = Options() # Podemos ahora pasarle argumentos, en este caso el navegador se va a mostrar maximizado option.add_argument('start-maximized') # 2do argumento, podemos testear en modo incognito option.add_argument('incognito') # Considerar, levantar un browser en modo gráfico con su ventanita, es muy pesado y usa tiempo. # por eso existe algo llamado Modo Headless, no se va a ver, pero si se va a ejecutar de manera # rápida, entonces no se deben ejecutar las pruebas en modo gráfico. # 4to Argumento, se debe empezar a ejecutar en Modo Headless. Para este caso, vamos habilitar # todos los casos de pruebas # Comentamos por un momento, para hacer una prueba, cuando estemos programando el caso de prueba # no debemos trabajar en modo headless, cuando ya este listo el testcase, activamos tal modo option.add_argument('--headless') # 3er argumento, sino queremos que chrome use el gpu (hardware de la tarjeta gráfica) #option.add_argument('--disable-gpu') # Por tanto, tenemos dos formas o maneras de controlar ciertas cosas del browser. # - A partir de Selenium # - A partir de las opciones de Chrome (Recomendable) # Ahora voy a pasar al webdriver.Chrome un segundo argumento con esto comentamos los maximize, size y position self.driver = webdriver.Chrome('chromedriver.exe', chrome_options=option) # Clase XI, se va a presentar maximizada la pantalla del navegador # self.driver.maximize_window() # También, podemos personalizar el tamaño de la ventana del navegador, ancho x alto #self.driver.set_window_size(200, 240) # Podemos indicar la posición donde se va a mostrar el navegador #self.driver.set_window_position(150, 150) # Abrir el browser self.driver.get('http://automationpractice.com/index.php') # Agregando el implicit wait, tu timeout a partir de acá son 5'' self.driver.implicitly_wait(5) # Creamos un objeto de la clase PageIndex, le vamos a pasar el parámetro driver. self.indexPage = PageIndex(self.driver) # Creamos un objeto de la clase PageItems, le vamos a pasar el parámetro driver. self.itemsPage = PageItems(self.driver) # Creamos un objeto de la clase PageItem, le vamos a pasar el parámetro driver. self.itemPage = PageItem(self.driver) #@unittest.skip("Not needed now") def test_search_no_elements(self): #try: self.indexPage.search('hola') # Vamos a esperar dos segundos, para que cargue la página # con sus elementos. #time.sleep(2) #self.assertEqual(self.itemsPage.return_no_element_text(), 'No results were found for your search "saludo"') # hola self.assertEqual(self.itemsPage.return_no_element_text(), 'No results were found for your search "hola"') # Verificamos que si ingreso un texto que no existe, # se muestre el mensaje en la página => No results were found for your search "hola" # Mediante el assertEqual, comparamos si las dos variables son iguales. # Cuando encontremos el xpath, vamos a extraer el texto, para asignarlo a la variable # result y así compararla con el texto de la variable expected_result # result = driver.find_element_by_xpath('//*[@id="center_column"]/p').text # expected_result = 'No results were found for your search "hola"' # Comentamos las dos variables de arriba, en el assert reemplazamos los valores de las # variables y nos ahorramos dos lineas de código #self.assertEqual(self.driver.find_element_by_xpath('//*[@id="center_column"]/p').text, 'No results were found for your search "hola"') # Clase XI, para capturar la pantalla de evidencia, hacemos lo siguiente, agregamos un nombre con su extensión # Otro caso sería que si la prueba falla se va a tomar la evidencia, cambiamos "hola" por "Saludo" # Agregamos el try. # Recomendación, no se debe utilizar try para los Assert. self.driver.save_screenshot('no_element.jpg') #except: # Si hay un error debe generar una evidencia de la misma #self.driver.save_screenshot('errorss.jpg') @unittest.skip("Not needed now") def test_search_find_dresses(self): self.indexPage.search('dress') #time.sleep(2) self.assertTrue("DRESS" in self.itemsPage.return_section_title()) # Mediante el assertTrue. # cuando encontremos el xpath, vamos a extraer el texto, para asignarlo a la variable # result y así compararla con el texto de la variable expected_result #result = driver.find_element_by_xpath('//*[@id="center_column"]/h1/span[1]').text #expected_result = "DRESS" # el texto DRESS se encuentra en el texto que tiene la variable result. # Comentamos las dos variables de arriba, en el assert reemplazamos los valores de las # variables y nos ahorramos dos lineas de código #self.assertTrue("DRESS" in self.driver.find_element_by_xpath('//*[@id="center_column"]/h1/span[1]').text) @unittest.skip("Not needed now") def test_search_find_tshirts(self): self.indexPage.search('t-shirts') #time.sleep(2) self.assertTrue('T-SHIRTS' in self.itemsPage.return_section_title(), self.itemsPage.return_section_title()) # El 3er parámetro es un mensaje, el cual muestra lo que tiene como texto encontrado # mediante el xpath. # Si no se encuentra el texto que ingresamos "T-SHIRTS" en el texto que encuentra el xpath # muestra el texto que ha encontrado. # Este es el error que se muestra => AssertionError: False is not true : "T-SHIRT" #self.assertTrue('T-SHIRTS' in self.driver.find_element_by_xpath('//*[@id="center_column"]/h1/span[1]').text, self.driver.find_element_by_xpath('//*[@id="center_column"]/h1/span[1]').text) # Ejercicio de meter ropa en el carro @unittest.skip("Not needed now") def test_tarea(self): self.indexPage.search('T-Shirts') #time.sleep(2) self.itemsPage.click_orange_button() # Como vamos a otra página, agregamos 2'' para que carguen los elementos self.itemPage.enter_quantity('25') # Vamos a clickear 3 veces, pasamos al parámetro el valor 3. self.itemPage.add_elements(3) # Asigno a una variable lo que devuelve el método, en este caso el valor del elemento number = self.itemPage.get_number_of_elements() # Verificamos me diante el assert si el valor es igual a 28 self.assertTrue(number == '28') # Vamos a agregar unos segundos para verificar que se muestre la cantidad ingresada #time.sleep(3) @unittest.skip("Not needed now") def test_selection(self): # Ingresamos T-shirts self.indexPage.search('t-shirts') # Seleccionamos el elemento por el texto, es decir el parámetro text self.itemsPage.select_by_text('Product Name: A to Z') time.sleep(3) # Seleccionamos el elemento por el value, es decir el parámetro value self.itemsPage.select_by_value('reference:asc') time.sleep(3) # Seleccionamos el elemento por el índice, es decir el parámetro number self.itemsPage.select_by_index(4) time.sleep(3) # Método que tiene las Postcondiciones, que quiero que pase, cuando termina una prueba. def tearDown(self): # Cerrar el browser self.driver.close() # Cerrar la sesión del webdriver self.driver.quit()
class SearchCases(unittest.TestCase): # Método que tiene las Precondiciones def setUp(self): self.driver = webdriver.Chrome('chromedriver.exe') # Abrir el browser self.driver.get('http://automationpractice.com/index.php') # Agregando el implicit wait, tu timeout a partir de acá son 5'' self.driver.implicitly_wait(5) # Creamos un objeto de la clase PageIndex, le vamos a pasar el parámetro driver. self.indexPage = PageIndex(self.driver) # Creamos un objeto de la clase PageItems, le vamos a pasar el parámetro driver. self.itemsPage = PageItems(self.driver) # Creamos un objeto de la clase PageItem, le vamos a pasar el parámetro driver. self.itemPage = PageItem(self.driver) @unittest.skip("Not needed now") def test_search_no_elements(self): self.indexPage.search('hola') # Vamos a esperar dos segundos, para que cargue la página # con sus elementos. #time.sleep(2) self.assertEqual(self.itemsPage.return_no_element_text(), 'No results were found for your search "hola"') # Verificamos que si ingreso un texto que no existe, # se muestre el mensaje en la página => No results were found for your search "hola" # Mediante el assertEqual, comparamos si las dos variables son iguales. # Cuando encontremos el xpath, vamos a extraer el texto, para asignarlo a la variable # result y así compararla con el texto de la variable expected_result # result = driver.find_element_by_xpath('//*[@id="center_column"]/p').text # expected_result = 'No results were found for your search "hola"' # Comentamos las dos variables de arriba, en el assert reemplazamos los valores de las # variables y nos ahorramos dos lineas de código #self.assertEqual(self.driver.find_element_by_xpath('//*[@id="center_column"]/p').text, 'No results were found for your search "hola"') @unittest.skip("Not needed now") def test_search_find_dresses(self): self.indexPage.search('dress') #time.sleep(2) self.assertTrue("DRESS" in self.itemsPage.return_section_title()) # Mediante el assertTrue. # cuando encontremos el xpath, vamos a extraer el texto, para asignarlo a la variable # result y así compararla con el texto de la variable expected_result #result = driver.find_element_by_xpath('//*[@id="center_column"]/h1/span[1]').text #expected_result = "DRESS" # el texto DRESS se encuentra en el texto que tiene la variable result. # Comentamos las dos variables de arriba, en el assert reemplazamos los valores de las # variables y nos ahorramos dos lineas de código #self.assertTrue("DRESS" in self.driver.find_element_by_xpath('//*[@id="center_column"]/h1/span[1]').text) @unittest.skip("Not needed now") def test_search_find_tshirts(self): self.indexPage.search('t-shirts') #time.sleep(2) self.assertTrue('T-SHIRTS' in self.itemsPage.return_section_title(), self.itemsPage.return_section_title()) # El 3er parámetro es un mensaje, el cual muestra lo que tiene como texto encontrado # mediante el xpath. # Si no se encuentra el texto que ingresamos "T-SHIRTS" en el texto que encuentra el xpath # muestra el texto que ha encontrado. # Este es el error que se muestra => AssertionError: False is not true : "T-SHIRT" #self.assertTrue('T-SHIRTS' in self.driver.find_element_by_xpath('//*[@id="center_column"]/h1/span[1]').text, self.driver.find_element_by_xpath('//*[@id="center_column"]/h1/span[1]').text) # Ejercicio de meter ropa en el carro @unittest.skip("Not needed now") def test_tarea(self): self.indexPage.search('t-shirts') #time.sleep(2) self.itemsPage.click_orange_button() # Como vamos a otra página, agregamos 2'' para que carguen los elementos self.itemPage.enter_quantity('25') # Vamos a clickear 3 veces, pasamos al parámetro el valor 3. self.itemPage.add_elements(3) # Asigno a una variable lo que devuelve el método, en este caso el valor del elemento number = self.itemPage.get_number_of_elements() # Verificamos me diante el assert si el valor es igual a 28 self.assertTrue(number == '28') # Vamos a agregar unos segundos para verificar que se muestre la cantidad ingresada #time.sleep(3) def test_selection(self): # Ingresamos T-shirts self.indexPage.search('t-shirts') # Seleccionamos el elemento por el texto, es decir el parámetro text self.itemsPage.select_by_text('Product Name: A to Z') time.sleep(3) # Seleccionamos el elemento por el value, es decir el parámetro value self.itemsPage.select_by_value('reference:asc') time.sleep(3) # Seleccionamos el elemento por el índice, es decir el parámetro number self.itemsPage.select_by_index(4) time.sleep(3) # Método que tiene las Postcondiciones, que quiero que pase, cuando termina una prueba. def tearDown(self): # Cerrar el browser self.driver.close() # Cerrar la sesión del webdriver self.driver.quit()