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') #Podemos testear en modo incognito option.add_argument('incognito') #Considerar, levantar un browser en modo gráfico (en el explorador), 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 (background). #Cuando estemos programando el caso de prueba, no debemos trabajar en modo headless, cuando #este listo el testcase, activamos tal modo. option.add_argument('--headless') #Por tanto, tenemos dos formas o maneras de controlar ciertas cosas del browser. #1. A partir de Selenium #2. A partir de las opciones de Chrome (Recomendable) # Ahora voy a pasar al webdriver.Chrome un segundo argumento, el objeto option de la clase Options. self.driver = webdriver.Chrome('chromedriver.exe', chrome_options=option) #self.driver = webdriver.Chrome('chromedriver.exe') self.driver.get('http://automationpractice.com/index.php') self.driver.implicitly_wait(5) #Creamos un objeto de tipo PageIndex(clase) self.indexPage = PageIndex(self.driver) #Creamos un objeto de tipo PageResult(clase) self.resultPage = PageResult(self.driver) #Creamos un objeto de tipo PageItem(clase) self.itemPage = PageItem(self.driver)
def setUp(self): self.driver = webdriver.Chrome('Chromedriver.exe') self.driver.get = ('http://automationpractice.com/index.php') self.indexPage = PageIndex(self.driver) self.itemsPage = PageItems(driver) self.itemsPage = PageItem(self.driver)
def setUp(self): option = Options() option.add_argument('start-maximized') self.driver = webdriver.Chrome('chromedriver.exe', options=option) self.driver.get('http://automationpractice.com/index.php') self.driver.implicitly_wait(5) self.index_page = PageIndex(self.driver) self.login_page = PageLogin(self.driver)
def setUp(self): option = Options() option.add_argument("start-maximized") option.add_argument("incognito") # option.add_argument("--headless") self.driver = webdriver.Chrome("drivers\chromedriver.exe", chrome_options=option) self.driver.get("https://www.mercadolibre.com/") self.indexPage = PageIndex(self.driver) self.itemsPage = PageItems(self.driver) self.itemPage = PageItem(self.driver)
def setUp(self): self.driver = webdriver.Chrome('chromedriver.exe') # Abrir el browser self.driver.get('http://automationpractice.com/index.php') # 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)
def setUp(self): self.driver = webdriver.Chrome('chromedriver.exe') self.driver.get('http://automationpractice.com/index.php') self.driver.implicitly_wait(5) #Creamos un objeto de tipo PageIndex(clase) self.indexPage = PageIndex(self.driver) #Creamos un objeto de tipo PageResult(clase) self.resultPage = PageResult(self.driver) #Creamos un objeto de tipo PageItem(clase) self.itemPage = PageItem(self.driver)
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()
def setUp(self): option = Options() option.add_argument('start-maximized') #option.add_argument('incognito') self.driver = webdriver.Chrome('chromedriver.exe', chrome_options=option) self.driver.get('https://www.espn.com/?src=com&_adblock=true') self.driver.implicitly_wait(5) self.indexPage = PageIndex(self.driver) self.indexPagePreLogin = PagePreLogin(self.driver) self.indexPageLogin = PageLogin(self.driver)
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 setUp(self): option = Options() option.add_argument("start-maximized") #option.add_argument("incognito") option.add_argument("--headless") #NO SE LEVANTA EL BROWSER self.driver = webdriver.Chrome('chromedriver.exe', chrome_options=option) self.driver.get("http://automationpractice.com/index.php") self.driver.implicitly_wait(5) #self.driver.set_window_position(150, 200) #self.driver.maximize_window() #Ventana completa #self.driver.set_window_size(200, 240) self.indexPage = PageIndex(self.driver) self.itemsPage = PageItems(self.driver)
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)
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)
class LoginCases(unittest.TestCase): def setUp(self): option = Options() option.add_argument('start-maximized') self.driver = webdriver.Chrome('chromedriver.exe', options=option) self.driver.get('http://automationpractice.com/index.php') self.driver.implicitly_wait(5) self.index_page = PageIndex(self.driver) self.login_page = PageLogin(self.driver) def test_invalid_mail(self): self.index_page.sign_in() self.login_page.email_login('PepeElMasCapo') self.login_page.passwd_login('123456') self.login_page.button_login() time.sleep(5)
class SearchCases(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome('chromedriver.exe') self.driver.get('http://automationpractice.com/index.php') self.indexPage = PageIndex(self.driver) self.itemPage = PageItems(self.driver) def test_search_no_elements(self): self.indexPage.search('hola') time.sleep(2) #result = driver.find_element_by_xpath('//*[@id="center_column"]/p').text #expected_result = 'No results were found for your search "Hola"' self.assertEqual(self.itemPage.return_no_element_text(), 'No results were found for your search "hola"') def test_search_find_dress(self): self.indexPage.search('dress') time.sleep(2) self.assertTrue('DRESS' in self.itemPage.return_section_titule()) def test_search_find_tshirt(self): self.indexPage.search('t-shirts') time.sleep(2) self.assertTrue('T-SHIRTS' in self.itemPage.return_section_titule()) def tearDown(self): self.driver.close() self.driver.quit()
class TeatroColon(unittest.TestCase): def setUp(self): path = 'C:\\Automation\\geckodriver' self.driver = Firefox(executable_path=path) self.driver.implicitly_wait(10) self.driver.get('https://teatrocolon.org.ar/es') self.indexPage = PageIndex(self.driver) def test_donaciones(self): self.driver.find_element_by_css_selector('.nav-entradas').click() self.assertEqual( self.driver.find_element_by_css_selector( 'h1.page-header > span:nth-child(1)').text, 'DONACIONES') def test_busqueda_orquesta(self): self.indexPage.search('orquesta') self.driver.find_element_by_css_selector( 'div.item_search:nth-child(4) > span:nth-child(1) > h4:nth-child(1) > strong:nth-child(1) > a:nth-child(1)' ).click() self.assertEqual( self.driver.find_element_by_css_selector( 'h1.page-header > span:nth-child(1)').text, 'ORQUESTA FILARMÓNICA DE BUENOS AIRES') def test_noticias(self): self.driver.find_element_by_xpath( '/html/body/div[1]/header/div[2]/div/nav[2]/ul/li[9]/a').click() self.driver.find_element_by_css_selector('.link-vermas').click() self.driver.find_element_by_name('categories[23]').click() self.assertTrue( 'ISATC en Mar del Plata' in self.driver. find_element_by_partial_link_text('ISATC en Mar del Plata').text) def tearDown(self): self.driver.close() self.driver.quit()
class TestCase(unittest.TestCase): def setUp(self): option = Options() option.add_argument('start-maximized') #option.add_argument('incognito') self.driver = webdriver.Chrome('chromedriver.exe', chrome_options=option) self.driver.get('https://www.espn.com/?src=com&_adblock=true') self.driver.implicitly_wait(5) self.indexPage = PageIndex(self.driver) self.indexPagePreLogin = PagePreLogin(self.driver) self.indexPageLogin = PageLogin(self.driver) def test_login(self): self.indexPage.user() self.indexPagePreLogin.enter() self.indexPageLogin.enter_credential('*****@*****.**', '#Arica01') def tearDown(self): self.driver.close() self.driver.quit()
class SearchCases(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome('Chromedriver.exe') self.driver.get = ('http://automationpractice.com/index.php') self.indexPage = PageIndex(self.driver) self.itemsPage = PageItems(driver) self.itemsPage = PageItem(self.driver) @unittest.skip("not needed now") def test_search_no_elements(self): self.indexPage.search('hola') time.sleep(2) self.assertEqual(self.itemsPage.return_no_element_text(), 'No results were fouund for your search "hola"') @unittest.skip("not needed now") def test_search_find_dresses(self): self.indexPage.search('dres') time.sleep(2) 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') time.sleep(2) self.assertTrue('T-SHIRT' in self.itemsPage.return_section_title()) def test_tarea(self): self.indexPage.search('t-shirt') time.sleep(2) self.itemsPage.click_orange_button() time.sleep(2) self.itemsPage.enter_quantity('25') time.sleep(3) def tearDown(self): 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") #NO SE LEVANTA EL BROWSER self.driver = webdriver.Chrome('chromedriver.exe', chrome_options=option) self.driver.get("http://automationpractice.com/index.php") self.driver.implicitly_wait(5) #self.driver.set_window_position(150, 200) #self.driver.maximize_window() #Ventana completa #self.driver.set_window_size(200, 240) self.indexPage = PageIndex(self.driver) self.itemsPage = PageItems(self.driver) @unittest.skip("Negativo") 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"') @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()) def test_selections(self): self.indexPage.search('t-shirt') self.itemsPage.select_by_text('Product Name: A to Z') time.sleep(4) self.itemsPage.select_by_value('reference:asc') #self.driver.save_screenshot('Lista.png') #TOMAR FOTO time.sleep(3) self.itemsPage.select_by_index(3) def tearDown(self): self.driver.close() self.driver.quit()
class SearchCases(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome('chromedriver.exe') self.driver.get('http://automationpractice.com/index.php') self.indexPage = PageIndex( self.driver) #le paso el web driver a la clase PageIndex self.itemsPage = PageItems(self.driver) def test_search_no_elements(self): # self.driver.find_element_by_id('search_query_top').send_keys('hola') # self.driver.find_element_by_name('submit_search').click() self.indexPage.search('hola') time.sleep(2) # self.assertEqual(self.driver.find_element_by_xpath('//*[@id="center_column"]/p').text, 'No results were found for your 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.driver.find_element_by_id('search_query_top').send_keys('dress') # self.driver.find_element_by_name('submit_search').click() self.indexPage.search('dress') time.sleep(2) # self.assertTrue('DRESS' in self.driver.find_element_by_xpath('//*[@id="center_column"]/p').text) self.assertTrue('DRESS' in self.itemsPage.return_section_title()) def test_search_find_tshirts(self): # self.driver.find_element_by_id('search_query_top').send_keys('t-shirt') # self.driver.find_element_by_name('submit_search').click() self.indexPage.search('t-shirt') time.sleep(2) # self.assertTrue('T-SHIRT' in self.driver.find_element_by_xpath('//*[@id="center_column"]/h1/span[1]').text) self.assertTrue('T-SHIRT' in self.itemsPage.return_section_title()) def tearDown(self): self.driver.close() self.driver.quit()
class TestCase(unittest.TestCase): #Precondiciones def setUp(self): self.driver = webdriver.Chrome('chromedriver.exe') self.driver.get('http://automationpractice.com/index.php') self.driver.implicitly_wait(5) #Creamos un objeto de tipo PageIndex(clase) self.indexPage = PageIndex(self.driver) #Creamos un objeto de tipo PageResult(clase) self.resultPage = PageResult(self.driver) #Creamos un objeto de tipo PageItem(clase) self.itemPage = PageItem(self.driver) @unittest.skip('Not need now') def test_search_no_element(self): self.indexPage.search('Hola') self.assertEqual(self.resultPage.return_no_element_text(), 'No results were found for your search "Hola"') @unittest.skip('Not need now') def test_search_find_dresses(self): self.indexPage.search('dress') self.assertTrue('DRESS' in self.resultPage.return_section_title()) @unittest.skip('Not need now') def test_search_find_tshirts(self): self.indexPage.search('t-shirts') self.assertTrue('T-SHIRTS' in self.resultPage.return_section_title(), self.resultPage.return_section_title()) @unittest.skip('Not need now') def test_tarea(self): self.indexPage.search('t-shirts') self.resultPage.click_orange_button() self.itemPage.enter_quantity('25') self.itemPage.add_elements(3) # Asigno a una variable lo que devuelve el método (28), en este caso el valor del elemento number = self.itemPage.get_number_of_elements() # Verificamos mediante el assert si el valor es igual a 28 (lo que nosotros sabemos) self.assertTrue(number == '28') # Vamos a agregar unos segundos solo para verificar que se muestre la cantidad ingresada, luego comentamos time.sleep(3) #@unittest.skip('Not need now') def test_selection(self): self.indexPage.search('t-shirts') # Seleccionamos el elemento por el texto, es decir el parámetro text self.resultPage.select_by_text('Product Name: A to Z') # Vamos a agregar unos segundos solo para verificar que se muestre la cantidad ingresada, luego comentamos time.sleep(3) # Seleccionamos el elemento por el valor, es decir el parámetro value self.resultPage.select_by_value('reference:asc') # Vamos a agregar unos segundos solo para verificar que se muestre la cantidad ingresada, luego comentamos time.sleep(3) # Seleccionamos el elemento por el indice (4 => Product Name: Z to A), es decir el parámetro number self.resultPage.select_by_index(4) # Vamos a agregar unos segundos solo para verificar que se muestre la cantidad ingresada, luego comentamos time.sleep(3) #Postcondiciones, que quiero que pase, cuando termine una prueba def tearDown(self): self.driver.close() 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') # 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) 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"') 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) 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) # 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()
def setUp(self): self.driver = webdriver.Chrome('chromedriver.exe') self.driver.get('http://automationpractice.com/index.php') self.indexPage = PageIndex( self.driver) #le paso el web driver a la clase PageIndex self.itemsPage = PageItems(self.driver)
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("drivers\chromedriver.exe", chrome_options=option) self.driver.get("https://www.mercadolibre.com/") self.indexPage = PageIndex(self.driver) self.itemsPage = PageItems(self.driver) self.itemPage = PageItem(self.driver) #@unittest.skip("Not needed now") def test_search_product(self): self.indexPage.select_nationality_site() self.indexPage.nav_search_input('iPhone 11 Pro') self.indexPage.nav_search_button() #self.itemsPage.items_page_mayor_precio() try: self.itemsPage.items_11pro() self.itemsPage.items_11pro_capacidad() self.itemsPage.items_price_from('300000') self.itemsPage.items_to_price('340000') self.itemsPage.items_button_price() self.itemsPage.items_search_results() except: self.driver.save_screenshot('error_itemsPage.jpg') try: self.itemPage.item_capacidad_256gb() #self.itemPage.item_image_2nd() #self.itemPage.item_color_oro() self.assertEqual(self.itemPage.item_assert_text_liberado(), 'Liberado.') self.itemPage.item_comprar_ahora() time.sleep(2) except: self.driver.save_screenshot('error_itemPage.jpg') #@unittest.skip("Not needed now") def test_nav_categorias_tecnologia_celulares(self): try: self.indexPage.select_nationality_site() self.indexPage.nav_categ() self.indexPage.nav_tecno() self.indexPage.nav_para_playstation() self.itemsPage.items_price_from('10000') self.itemsPage.items_to_price('40000') self.itemsPage.items_button_price() self.itemsPage.items_tienda_oficiales() self.itemsPage.items_play_station_4() self.itemsPage.items_tienda_oficial_Thrustmaster() self.assertEqual(self.itemsPage.items_assert_tienda_oficial_Thrustmaster(),'Thrustmaster Tienda oficial') time.sleep(2) except: self.driver.save_screenshot('error_tecnologia_tienda_oficial_thrustmaster.jpg')
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()
def setUp(self): path = 'C:\\Automation\\geckodriver' self.driver = Firefox(executable_path=path) self.driver.implicitly_wait(10) self.driver.get('https://teatrocolon.org.ar/es') self.indexPage = PageIndex(self.driver)
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 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) # 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 TestCase(unittest.TestCase): #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') #Podemos testear en modo incognito option.add_argument('incognito') #Considerar, levantar un browser en modo gráfico (en el explorador), 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 (background). #Cuando estemos programando el caso de prueba, no debemos trabajar en modo headless, cuando #este listo el testcase, activamos tal modo. option.add_argument('--headless') #Por tanto, tenemos dos formas o maneras de controlar ciertas cosas del browser. #1. A partir de Selenium #2. A partir de las opciones de Chrome (Recomendable) # Ahora voy a pasar al webdriver.Chrome un segundo argumento, el objeto option de la clase Options. self.driver = webdriver.Chrome('chromedriver.exe', chrome_options=option) #self.driver = webdriver.Chrome('chromedriver.exe') self.driver.get('http://automationpractice.com/index.php') self.driver.implicitly_wait(5) #Creamos un objeto de tipo PageIndex(clase) self.indexPage = PageIndex(self.driver) #Creamos un objeto de tipo PageResult(clase) self.resultPage = PageResult(self.driver) #Creamos un objeto de tipo PageItem(clase) self.itemPage = PageItem(self.driver) #@unittest.skip('Not need now') def test_search_no_element(self): self.indexPage.search('Hola') self.assertEqual(self.resultPage.return_no_element_text(), 'No results were found for your search "Hola"') # Clase XI, para capturar la pantalla de evidencia, hacemos lo siguiente, agregamos el nombre del archivo # con su extensión. Considerar, no se debe utilizar try para los Assert. self.driver.save_screenshot('no_elements.jpg') #@unittest.skip('Not need now') def test_search_find_dresses(self): self.indexPage.search('dress') self.assertTrue('DRESS' in self.resultPage.return_section_title()) #@unittest.skip('Not need now') def test_search_find_tshirts(self): self.indexPage.search('t-shirts') self.assertTrue('T-SHIRTS' in self.resultPage.return_section_title(), self.resultPage.return_section_title()) #@unittest.skip('Not need now') def test_tarea(self): self.indexPage.search('t-shirts') self.resultPage.click_orange_button() self.itemPage.enter_quantity('25') self.itemPage.add_elements(3) # Asigno a una variable lo que devuelve el método (28), en este caso el valor del elemento number = self.itemPage.get_number_of_elements() # Verificamos mediante el assert si el valor es igual a 28 (lo que nosotros sabemos) self.assertTrue(number == '28') # Vamos a agregar unos segundos solo para verificar que se muestre la cantidad ingresada, luego comentamos time.sleep(3) #@unittest.skip('Not need now') def test_selection(self): self.indexPage.search('t-shirts') # Seleccionamos el elemento por el texto, es decir el parámetro text self.resultPage.select_by_text('Product Name: A to Z') # Vamos a agregar unos segundos solo para verificar que se muestre la cantidad ingresada, luego comentamos time.sleep(3) # Seleccionamos el elemento por el valor, es decir el parámetro value self.resultPage.select_by_value('reference:asc') # Vamos a agregar unos segundos solo para verificar que se muestre la cantidad ingresada, luego comentamos time.sleep(3) # Seleccionamos el elemento por el indice (4 => Product Name: Z to A), es decir el parámetro number self.resultPage.select_by_index(4) # Vamos a agregar unos segundos solo para verificar que se muestre la cantidad ingresada, luego comentamos time.sleep(3) #Postcondiciones, que quiero que pase, cuando termine una prueba def tearDown(self): self.driver.close() self.driver.quit()