├── EJ10_usando_implicit_wait.py ├── EJ11_click_radio_bt.py ├── EJ12_screenshotselenium.py ├── EJ13_Usando_Hover_Action.py ├── EJ14_Usando_Displayed_elements.py ├── EJ15_Usando_Hyperlinks_by_Link_text.py ├── EJ16_Buscando_CSS_Selector.py ├── EJ17_Busqueda_Sugerida.py ├── EJ18_Segundo_Plano.py ├── EJ19_Busqueda_elementos_en_tablas.py ├── EJ1_Prueba_funcionamiento_selenium.py ├── EJ23_Manejo_de_Permiso_de_Notificacion.py ├── EJ25_Pytessercat_Ejemplo.py ├── EJ26_Trabajando_con_scroll_down.py ├── EJ27_Usando_internet_explorer.py ├── EJ28_Manejo_de_cookies.py ├── EJ29_Tomar_captura_de_pantalla_con_selenium.py ├── EJ2_Ingresando_datos_de_correo.py ├── EJ2_Ingresar_datos_de_cuenta.py ├── EJ31_Como_ussar asserEqual.py ├── EJ32_Como_usar_assertNotEqual.py ├── EJ33_Agregar_nueva_pestana.py ├── EJ34_Manejando_movimientos_del_mouse.py ├── EJ35_Subir_archivo.py ├── EJ36_Mouse_DobleClick.py ├── EJ37_Mouse_ClickDerecho.py ├── EJ38_Busqueda_de_nuevo_frame.py ├── EJ39_Cargar_Archivos.py ├── EJ3_Como_usar_unittest.py ├── EJ3_usando_unittest.py ├── EJ40_Descargar_archivo.py ├── EJ4_Por_que_usar_Xpath.py ├── EJ4_buscando_elemento_por_xpath.py ├── EJ5_Accionando_Toggle_switch.py ├── EJ6_Usando_select.py ├── EJ7_Cambiar de ventana_o_pestaña.py ├── EJ8_Ir_a_la_pagina_anterio_o_la_siguiente.py ├── EJ9_usando_explicit_wait.py ├── Llenar formulario desde un excel ├── debug.log ├── ejemplo.xlsx ├── extrear_datos.py └── form.html ├── README.md ├── Secciones de configuracion.py ├── Unittest.py ├── ciclar informacion ├── Auto_llenar_formulario.py ├── datos.txt └── login.html ├── config.cfg ├── config.ini ├── img1.png ├── img2.png ├── img3.png ├── multitareaconselenium.py └── scrooldown.py /EJ10_usando_implicit_wait.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from selenium import webdriver 3 | from selenium.webdriver.common.by import By 4 | from selenium.webdriver.support.ui import WebDriverWait 5 | from selenium.webdriver.support import expected_conditions as EC 6 | 7 | 8 | class usando_unittest(unittest.TestCase): 9 | def setUp(self): 10 | self.driver = webdriver.Chrome(executable_path=r"C:\Users\NAlvarez\Documents\explorer_driver\chromedriver.exe") 11 | 12 | def test_usando_implicit_wait(self): 13 | driver = self.driver 14 | driver.implicitly_wait(5) # segundos 15 | driver.get("http://www.google.com") 16 | myDynamicElement = driver.find_element_by_name("q") 17 | 18 | if __name__ == '__main__': 19 | unittest.main() 20 | -------------------------------------------------------------------------------- /EJ11_click_radio_bt.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from selenium import webdriver 3 | from selenium.webdriver.common.keys import Keys 4 | import time 5 | class usando_unittest(unittest.TestCase): 6 | 7 | def setUp(self): 8 | self.driver = webdriver.Chrome(executable_path=r"C:\Users\NAlvarez\Documents\explorer_driver\chromedriver.exe") 9 | 10 | def test_usando_toggle(self): 11 | driver = self.driver 12 | driver.get("https://www.w3schools.com/howto/howto_css_custom_checkbox.asp") 13 | time.sleep(3) 14 | radio_bt = driver.find_element_by_xpath("//*[@id='main']/div[3]/div[1]/input[4]") 15 | radio_bt.click() 16 | time.sleep(3) 17 | radio_bt.click() 18 | time.sleep(3) 19 | 20 | def tearDown(self): 21 | self.driver.close() 22 | 23 | if __name__ == '__main__': 24 | unittest.main() -------------------------------------------------------------------------------- /EJ12_screenshotselenium.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from selenium import webdriver 3 | from selenium.webdriver.common.by import By 4 | from selenium.webdriver.support.ui import WebDriverWait 5 | from selenium.webdriver.support import expected_conditions as EC 6 | import time 7 | import cv2 8 | 9 | class usando_unittest(unittest.TestCase): 10 | def setUp(self): 11 | self.driver = webdriver.Chrome(executable_path=r"C:\dchrome\chromedriver.exe") 12 | 13 | def test_usando_opencv(self): 14 | driver = self.driver 15 | driver.get("http://www.google.com") 16 | driver.save_screenshot('img2.png') 17 | time.sleep(3) 18 | 19 | def test_comparando_imagenes(self): 20 | img1= cv2.imread('img1.png') 21 | img2= cv2.imread('img2.png') 22 | 23 | diferencia = cv2.absdiff(img1, img2) 24 | imagen_gris = cv2.cvtColor(diferencia, cv2.COLOR_BGR2GRAY) 25 | contours,_ = cv2.findContours(imagen_gris,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE) 26 | 27 | for c in contours: 28 | if cv2.contourArea(c) >= 20: 29 | posicion_x,posicion_y,ancho,alto = cv2.boundingRect(c) 30 | cv2.rectangle(img1,(posicion_x,posicion_y),(posicion_x+ancho,posicion_y+alto),(0,0,255),2) 31 | 32 | while(1): 33 | cv2.imshow('Imagen1', img1) 34 | cv2.imshow('Imagen2', img2) 35 | cv2.imshow('Diferencias detectadas', diferencia) 36 | teclado = cv2.waitKey(5) & 0xFF 37 | if teclado == 27: 38 | break 39 | cv2.destroyAllWindows() 40 | 41 | if __name__ == '__main__': 42 | unittest.main() 43 | -------------------------------------------------------------------------------- /EJ13_Usando_Hover_Action.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | from selenium.webdriver import ActionChains 3 | import time 4 | 5 | driver = webdriver.Chrome(executable_path=r"C:\dchrome\chromedriver.exe") 6 | driver.get("https://google.com") 7 | time.sleep(3) 8 | elem = driver.find_element_by_link_text("Privacidad") 9 | 10 | hover = ActionChains(driver).move_to_element(elem) 11 | hover.perform() -------------------------------------------------------------------------------- /EJ14_Usando_Displayed_elements.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | from selenium.webdriver.common.keys import Keys 3 | import time 4 | 5 | driver = webdriver.Chrome(executable_path=r"C:\dchrome\chromedriver.exe") 6 | driver.get("https://www.google.com") 7 | time.sleep(3) 8 | displaelemen = driver.find_element_by_name("btnI") 9 | print(displaelemen.is_displayed())# regresa true o false si ya cargo el elemento 10 | print(displaelemen.is_enabled())# regresa un true o false si el elemento esta disponible 11 | 12 | -------------------------------------------------------------------------------- /EJ15_Usando_Hyperlinks_by_Link_text.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | from selenium.webdriver.common.keys import Keys 3 | import time 4 | 5 | driver = webdriver.Chrome(executable_path=r"C:\dchrome\chromedriver.exe") 6 | driver.get("https://www.w3schools.com/") 7 | time.sleep(5) 8 | continue_link = driver.find_element_by_link_text('Learn PHP') 9 | #continue_link = driver.find_element_by_partial_link_text('Lear') 10 | continue_link.click() -------------------------------------------------------------------------------- /EJ16_Buscando_CSS_Selector.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | from selenium.webdriver.common.keys import Keys 3 | import time 4 | 5 | driver = webdriver.Chrome(executable_path=r"C:\dchrome\chromedriver.exe") 6 | driver.get("https://www.w3schools.com/html/default.asp") 7 | time.sleep(5) 8 | content = driver.find_element_by_css_selector('a.w3-blue') 9 | content.click() -------------------------------------------------------------------------------- /EJ17_Busqueda_Sugerida.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | from selenium.webdriver.common.keys import Keys 3 | import time 4 | 5 | palabra_busqueda = "sele" 6 | driver = webdriver.Chrome(executable_path=r"C:\dchrome\chromedriver.exe") 7 | driver.get("https://www.google.com") 8 | time.sleep(5) 9 | 10 | busqueda = driver.find_element_by_name("q") 11 | busqueda.send_keys(palabra_busqueda) 12 | time.sleep(5) 13 | 14 | for i in range(1,11): 15 | elementos = driver.find_element_by_xpath("//*[@id='tsf']/div[2]/div/div[2]/div[2]/ul/li["+str(i)+"]/div/div[1]/div/span/b").text 16 | print(palabra_busqueda + elementos) 17 | driver.close() 18 | -------------------------------------------------------------------------------- /EJ18_Segundo_Plano.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | from selenium.webdriver.common.keys import Keys 3 | from selenium.webdriver.chrome.options import Options 4 | import time 5 | 6 | chrome_options = Options() 7 | chrome_options.add_argument("--headless") 8 | 9 | palabra_busqueda = "sel" 10 | driver = webdriver.Chrome(chrome_options=chrome_options, executable_path=r"C:\dchrome\chromedriver.exe") 11 | driver.get("https://google.com") 12 | time.sleep(5) 13 | 14 | busqueda = driver.find_element_by_name("q") 15 | busqueda.send_keys(palabra_busqueda) 16 | time.sleep(5) 17 | 18 | for i in range(1,11): 19 | linkElement = driver.find_element_by_xpath("//*[@id='tsf']/div[2]/div/div[2]/div[2]/ul/li[" +str(i)+"]/div/div[1]/div/span/b").text 20 | print(palabra_busqueda + linkElement) 21 | driver.close() -------------------------------------------------------------------------------- /EJ19_Busqueda_elementos_en_tablas.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | import time 3 | driver = webdriver.Chrome(executable_path=r"C:\dchrome\chromedriver.exe") 4 | driver.get("https://www.w3schools.com/html/html_tables.asp") 5 | time.sleep(5) 6 | 7 | valor = driver.find_element_by_xpath("//*[@id='customers']/tbody/tr[2]/td[2]").text 8 | print(valor) 9 | 10 | rows=len(driver.find_elements_by_xpath("//*[@id='customers']/tbody/tr")) 11 | cols=len(driver.find_elements_by_xpath("//*[@id='customers']/tbody/tr[1]/th")) 12 | 13 | print(rows) 14 | print(cols) 15 | 16 | for n in range(2,rows+1): 17 | for b in range(1,cols+1): 18 | dato=driver.find_element_by_xpath("//*[@id='customers']/tbody/tr["+str(n)+"]/td["+str(b)+"]").text 19 | print(dato, end=' ') 20 | print() 21 | -------------------------------------------------------------------------------- /EJ1_Prueba_funcionamiento_selenium.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | from selenium.webdriver.chrome.service import Service 3 | 4 | s = Service(r"E:\drivers\chromedrvier\chromedriver.exe") 5 | driver = webdriver.Chrome(service = s) 6 | driver.get("http://www.python.org") 7 | #driver.close() 8 | -------------------------------------------------------------------------------- /EJ23_Manejo_de_Permiso_de_Notificacion.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | from selenium.webdriver.chrome.options import Options 3 | import time 4 | 5 | opciones = Options() 6 | 7 | #enviar argumentos(1 permitiendo la notificacion, 2 bloquean la notificacion) 8 | opciones.add_experimental_option("prefs",{ 9 | "profile.default_content_setting_values.notifications" : 1 10 | }) 11 | 12 | driver = webdriver.Chrome(chrome_options=opciones, executable_path='C:\dchrome\chromedriver.exe') 13 | driver.get('https://developer.mozilla.org/es/docs/Web/API/notification') 14 | time.sleep(3) 15 | -------------------------------------------------------------------------------- /EJ25_Pytessercat_Ejemplo.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import pytesseract 3 | 4 | imagen = cv2.imread("ejemplo pytesseeract.png") 5 | pytesseract.pytesseract.tesseract_cmd = "C:\\Program Files\\Tesseract-OCR\\tesseract.exe" 6 | texto = pytesseract.image_to_string(imagen) 7 | print(texto) 8 | -------------------------------------------------------------------------------- /EJ26_Trabajando_con_scroll_down.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | import time 3 | 4 | driver = webdriver.Chrome(executable_path=r"C:\dchrome\chromedriver.exe") 5 | driver.get("https://www.amazon.com.mx/") 6 | time.sleep(3) 7 | driver.execute_script("window.scrollTo(0,document.body.scrollHeight)") 8 | time.sleep(3) 9 | driver.close() -------------------------------------------------------------------------------- /EJ27_Usando_internet_explorer.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | 3 | driver = webdriver.Ie(executable_path=r"C:\dchrome\IEDriverServer.exe") 4 | driver.get("http://www.google.com") 5 | driver.close() -------------------------------------------------------------------------------- /EJ28_Manejo_de_cookies.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | from selenium.webdriver.common.keys import Keys 3 | import time 4 | 5 | driver =webdriver.Chrome(executable_path=r"C:\dchrome\chromedriver.exe") 6 | driver.get("https://www.w3schools.com/html/default.asp") 7 | time.sleep(5) 8 | 9 | all_cookies = driver.get_cookies() 10 | 11 | print(all_cookies) 12 | 13 | -------------------------------------------------------------------------------- /EJ29_Tomar_captura_de_pantalla_con_selenium.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | driver =webdriver.Chrome(executable_path=r"C:\dchrome\chromedriver.exe") 3 | driver.get("https://www.youtube.com/channel/UCcT6IFddIod7xURc7a7q3Bg?view_as=subscriber") 4 | driver.get_screenshot_as_file("C:\\Users\\alber\\Documents\\Cursos programacion canal ksiel99\\Python con selenium ejercicios\\mi_canal.png") -------------------------------------------------------------------------------- /EJ2_Ingresando_datos_de_correo.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | from selenium.webdriver.common.keys import Keys 3 | import time 4 | 5 | driver = webdriver.Chrome(executable_path=r"C:\Users\NAlvarez\Documents\explorer_driver\chromedriver.exe") 6 | driver.get("https://gmail.com") 7 | time.sleep(5) 8 | 9 | usuario = driver.find_element_by_id("identifierId") 10 | usuario.send_keys("tucorreo") 11 | usuario.send_keys(Keys.ENTER) 12 | time.sleep(3) 13 | acceso = driver.find_element_by_name("password") 14 | acceso.send_keys("tuconstraseña") 15 | acceso.send_keys(Keys.ENTER) 16 | -------------------------------------------------------------------------------- /EJ2_Ingresar_datos_de_cuenta.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | from selenium.webdriver.common.keys import Keys 3 | import time 4 | 5 | driver = webdriver.Chrome(executable_path=r"C:\Users\NAlvarez\Documents\explorer_driver\chromedriver.exe") 6 | driver.get("https://gmail.com") 7 | time.sleep(5) 8 | 9 | usuario = driver.find_element_by_id("identifierId") 10 | usuario.send_keys("tucorreo") 11 | usuario.send_keys(Keys.ENTER) 12 | time.sleep(3) 13 | acceso = driver.find_element_by_name("password") 14 | acceso.send_keys("tucontraseña") 15 | acceso.send_keys(Keys.ENTER) 16 | -------------------------------------------------------------------------------- /EJ31_Como_ussar asserEqual.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from selenium import webdriver 3 | import time 4 | class usando_unittest(unittest.TestCase): 5 | 6 | def setUp(self): 7 | self.driver = webdriver.Chrome(executable_path=r"C:\dchrome\chromedriver.exe") 8 | 9 | def test_assertEqual(self): 10 | driver = self.driver 11 | driver.get("http://www.google.com") 12 | titulodepagina = driver.title 13 | self.assertEqual("Google123", titulodepagina,"El titulo de la pagina es incorrecto") 14 | 15 | def tearDown(self): 16 | self.driver.close() 17 | 18 | if __name__ == '__main__': 19 | unittest.main() 20 | -------------------------------------------------------------------------------- /EJ32_Como_usar_assertNotEqual.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from selenium import webdriver 3 | import time 4 | 5 | class usando_unittest(unittest.TestCase): 6 | 7 | def setUp(self): 8 | self.driver = webdriver.Chrome(executable_path=r"C:\dchrome\chromedriver.exe") 9 | 10 | 11 | def test_asserEqual(self): 12 | driver = self.driver 13 | driver.get("https://www.google.com") 14 | titulodelapagina = driver.title 15 | time.sleep(2) 16 | self.assertNotEqual("Google" ,titulodelapagina, "El titulo de la pagina es igual") 17 | 18 | def tearDown(self): 19 | self.driver.close() 20 | 21 | if __name__ == '__main__': 22 | unittest.main() -------------------------------------------------------------------------------- /EJ33_Agregar_nueva_pestana.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from selenium import webdriver 3 | from selenium.webdriver.common.by import By 4 | import time 5 | 6 | class usando_unittest(unittest.TestCase): 7 | 8 | def setUp(self): 9 | self.driver = webdriver.Chrome(executable_path=r"C:\dchrome\chromedriver.exe") 10 | 11 | 12 | def test_manejando_ventanas(self): 13 | self.driver.get("https://www.google.com/intl/es/gmail/about/#") 14 | time.sleep(4) 15 | siguiente= self.driver.find_element_by_xpath("/html/body/div[3]/div[1]/div/ul[1]/li/div/div/div[1]/div/div[3]/a[1]") 16 | siguiente.click() 17 | print(self.driver.current_window_handle) 18 | time.sleep(3) 19 | 20 | handles=self.driver.window_handles 21 | for handle in handles: 22 | self.driver.switch_to.window(handle) 23 | print(self.driver.title) 24 | 25 | def tearDown(self): 26 | self.driver.close() 27 | 28 | if __name__ == '__main__': 29 | unittest.main() -------------------------------------------------------------------------------- /EJ34_Manejando_movimientos_del_mouse.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from selenium import webdriver 3 | from selenium.webdriver import ActionChains 4 | import time 5 | 6 | class usando_unittest(unittest.TestCase): 7 | 8 | def setUp(self): 9 | self.driver = webdriver.Chrome(executable_path=r"C:\dchrome\chromedriver.exe") 10 | 11 | 12 | def test_manejando_mouse(self): 13 | self.driver.get("https://nicolasalvarez.com/") 14 | time.sleep(4) 15 | mouse_mov=self.driver.find_element_by_xpath("//*[@id='menu-item-68']/a") 16 | mouse_mov2=self.driver.find_element_by_xpath("//*[@id='menu-item-82']/a") 17 | movimiento=ActionChains(self.driver) 18 | movimiento.move_to_element(mouse_mov).move_to_element(mouse_mov2).click().perform() 19 | time.sleep(3) 20 | 21 | 22 | def tearDown(self): 23 | self.driver.close() 24 | 25 | if __name__ == '__main__': 26 | unittest.main() -------------------------------------------------------------------------------- /EJ35_Subir_archivo.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from selenium import webdriver 3 | from selenium.webdriver.common.by import By 4 | import time 5 | 6 | class usando_unittest(unittest.TestCase): 7 | 8 | def setUp(self): 9 | self.driver = webdriver.Chrome(executable_path=r"C:\dchrome\chromedriver.exe") 10 | 11 | def test_subir_archivo(self): 12 | self.driver.get("https://mdbootstrap.com/plugins/jquery/file-upload/") 13 | time.sleep(4) 14 | self.driver.find_element_by_id("input-file-now-custom-2").send_keys("C:\\Users\\alber\\Pictures\\imagenes png\\suscribete.png") 15 | time.sleep(4) 16 | 17 | def tearDown(self): 18 | self.driver.close() 19 | 20 | if __name__ == '__main__': 21 | unittest.main() -------------------------------------------------------------------------------- /EJ36_Mouse_DobleClick.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from selenium import webdriver 3 | from selenium.webdriver.common.by import By 4 | from selenium.webdriver import ActionChains 5 | import time 6 | 7 | class usando_unittest(unittest.TestCase): 8 | 9 | def setUp(self): 10 | self.driver = webdriver.Chrome(executable_path=r"c:\dchrome\chromedriver.exe") 11 | 12 | def test_subir_archivo(self): 13 | self.driver.get("https://nicolasalvarez.com/") 14 | time.sleep(4) 15 | dobleclick = self.driver.find_element_by_xpath("/html/body/div[1]/div/div/div[2]/div[2]/aside[1]/h3/span") 16 | actions = ActionChains(self.driver) 17 | actions.double_click(dobleclick).perform() 18 | time.sleep(3) 19 | 20 | def tearDown(self): 21 | self.driver.close() 22 | 23 | 24 | if __name__ == '__main__': 25 | unittest.main() -------------------------------------------------------------------------------- /EJ37_Mouse_ClickDerecho.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from selenium import webdriver 3 | from selenium.webdriver.common.by import By 4 | from selenium.webdriver import ActionChains 5 | import time 6 | 7 | class usando_unittest(unittest.TestCase): 8 | 9 | def setUp(self): 10 | self.driver = webdriver.Chrome(executable_path=r"c:\dchrome\chromedriver.exe") 11 | 12 | def test_subir_archivo(self): 13 | self.driver.get("https://nicolasalvarez.com/") 14 | time.sleep(4) 15 | clickderecho = self.driver.find_element_by_xpath("/html/body/div[1]/header/div/div[1]/div/div[2]/ul/li[2]/a/i") 16 | actions = ActionChains(self.driver) 17 | actions.context_click(clickderecho).perform() 18 | time.sleep(3) 19 | 20 | def tearDown(self): 21 | self.driver.close() 22 | 23 | 24 | if __name__ == '__main__': 25 | unittest.main() -------------------------------------------------------------------------------- /EJ38_Busqueda_de_nuevo_frame.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from selenium import webdriver 3 | from selenium.webdriver.common.keys import Keys 4 | import time 5 | class usando_unittest(unittest.TestCase): 6 | 7 | def setUp(self): 8 | self.driver = webdriver.Chrome(executable_path=r"C:\dchrome\chromedriver.exe") 9 | 10 | def test_buscar_frame(self): 11 | driver = self.driver 12 | driver.get("http://www.google.com") 13 | time.sleep(3) 14 | click1 = driver.find_element_by_id("gbwa") 15 | time.sleep(3) 16 | click1.click() 17 | time.sleep(2) 18 | driver.switch_to.frame(driver.find_element_by_xpath("/html/body/div/div[2]/div/div/div/div[3]/iframe")) 19 | time.sleep(3) 20 | click2 = driver.find_element_by_id("yDmH0d") 21 | time.sleep(2) 22 | click2.click() 23 | time.sleep(5) 24 | 25 | if __name__ == '__main__': 26 | unittest.main() 27 | 28 | 29 | -------------------------------------------------------------------------------- /EJ39_Cargar_Archivos.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from selenium import webdriver 3 | import time 4 | 5 | class usando_unittest(unittest.TestCase): 6 | 7 | def setUp(self): 8 | self.driver = webdriver.Chrome(executable_path=r"C:\dchrome\chromedriver.exe") 9 | 10 | def test_usando_toggle(self): 11 | driver = self.driver 12 | driver.get("https://www.w3schools.com/howto/howto_html_file_upload_button.asp") 13 | time.sleep(3) 14 | driver.find_element_by_id("myFile").send_keys("c:\\Users\\alber\\Pictures\\modelo s tesla.jpg") 15 | time.sleep(5) 16 | 17 | def tearDown(self): 18 | self.driver.close() 19 | 20 | if __name__ == '__main__': 21 | unittest.main() -------------------------------------------------------------------------------- /EJ3_Como_usar_unittest.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from selenium import webdriver 3 | from selenium.webdriver.common.keys import Keys 4 | import time 5 | class usando_unittest(unittest.TestCase): 6 | 7 | def setUp(self): 8 | self.driver = webdriver.Chrome(executable_path=r"C:\Users\NAlvarez\Documents\explorer_driver\chromedriver.exe") 9 | 10 | def test_buscar(self): 11 | driver = self.driver 12 | driver.get("http://www.google.com") 13 | self.assertIn("Google", driver.title) 14 | elem = driver.find_element_by_name("q") 15 | elem.send_keys("selenium") 16 | elem.send_keys(Keys.RETURN) 17 | time.sleep(5) 18 | assert "No se encontro el elemento." not in driver.page_source 19 | 20 | def tearDown(self): 21 | self.driver.close() 22 | 23 | if __name__ == '__main__': 24 | unittest.main() 25 | -------------------------------------------------------------------------------- /EJ3_usando_unittest.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from selenium import webdriver 3 | from selenium.webdriver.common.keys import Keys 4 | import time 5 | class usando_unittest(unittest.TestCase): 6 | 7 | def setUp(self): 8 | self.driver = webdriver.Chrome(executable_path=r"C:\Users\NAlvarez\Documents\explorer_driver\chromedriver.exe") 9 | 10 | def test_buscar(self): 11 | driver = self.driver 12 | driver.get("http://www.google.com") 13 | self.assertIn("Google", driver.title) 14 | elem = driver.find_element_by_name("q") 15 | elem.send_keys("selenium") 16 | elem.send_keys(Keys.RETURN) 17 | time.sleep(5) 18 | assert "No se encontro el elemento." not in driver.page_source 19 | 20 | def tearDown(self): 21 | self.driver.close() 22 | 23 | if __name__ == '__main__': 24 | unittest.main() 25 | -------------------------------------------------------------------------------- /EJ40_Descargar_archivo.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from selenium import webdriver 3 | from selenium.webdriver.chrome.options import Options 4 | import time 5 | 6 | 7 | 8 | class usando_unittest(unittest.TestCase): 9 | 10 | def setUp(self): 11 | chromeOptions=Options() 12 | chromeOptions.add_experimental_option("prefs", { 13 | "download.default_directory" : "C:\\dchrome", 14 | }) 15 | self.driver = webdriver.Chrome(executable_path=r"C:\dchrome\chromedriver.exe",chrome_options=chromeOptions) 16 | 17 | def test_usando_toggle(self): 18 | driver = self.driver 19 | driver.get("https://www.w3schools.com/howto/tryit.asp?filename=tryhow_html_download_link") 20 | time.sleep(3) 21 | driver.switch_to.frame(driver.find_element_by_xpath("/html/body/div[7]/div[4]/div/div/iframe")) 22 | time.sleep(3) 23 | driver.find_element_by_xpath("/html/body/p[2]/a").click() 24 | time.sleep(5) 25 | 26 | def tearDown(self): 27 | self.driver.close() 28 | 29 | if __name__ == '__main__': 30 | unittest.main() -------------------------------------------------------------------------------- /EJ4_Por_que_usar_Xpath.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from selenium import webdriver 3 | from selenium.webdriver.common.keys import Keys 4 | import time 5 | class usando_unittest(unittest.TestCase): 6 | 7 | def setUp(self): 8 | self.driver = webdriver.Chrome(executable_path=r"C:\Users\NAlvarez\Documents\explorer_driver\chromedriver.exe") 9 | 10 | def test_buscar_por_nombre(self): 11 | driver = self.driver 12 | driver.get("http://www.google.com") 13 | time.sleep(3) 14 | buscar_por_nombre = driver.find_element_by_name("q") 15 | time.sleep(3) 16 | buscar_por_nombre.send_keys("selenium", Keys.ARROW_DOWN) 17 | time.sleep(3) 18 | 19 | def tearDown(self): 20 | self.driver.close() 21 | 22 | if __name__ == '__main__': 23 | unittest.main() 24 | 25 | #Xpath=//Etiqueta[@atributo='valor'] 26 | #XPath absoluto ejemplo /html/body/div/div/div/article[2]/div/div/a/img, el inconveniente con este xpath es que si se cambia algo en la ruta ya no se podra encontrar 27 | #Xpath relativo ejemplo //*[@id="q"], la ventaja que se puede encontrar en cualquier parte del codigo ya que parte de un nodo y no de la raiz 28 | 29 | -------------------------------------------------------------------------------- /EJ4_buscando_elemento_por_xpath.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from selenium import webdriver 3 | from selenium.webdriver.common.keys import Keys 4 | import time 5 | class usando_unittest(unittest.TestCase): 6 | 7 | def setUp(self): 8 | self.driver = webdriver.Chrome(executable_path=r"C:\Users\NAlvarez\Documents\explorer_driver\chromedriver.exe") 9 | 10 | def test_buscar_por_nombre(self): 11 | driver = self.driver 12 | driver.get("http://www.google.com") 13 | time.sleep(3) 14 | buscar_por_nombre = driver.find_element_by_name("q") 15 | time.sleep(3) 16 | buscar_por_nombre.send_keys("selenium", Keys.ARROW_DOWN) 17 | time.sleep(3) 18 | 19 | def tearDown(self): 20 | self.driver.close() 21 | 22 | if __name__ == '__main__': 23 | unittest.main() 24 | 25 | #Xpath=//Etiqueta[@atributo='valor'] 26 | #XPath absoluto ejemplo /html/body/div/div/div/article[2]/div/div/a/img, el inconveniente con este xpath es que si se cambia algo en la ruta ya no se podra encontrar 27 | #Xpath relativo ejemplo //*[@id="q"], la ventaja que se puede encontrar en cualquier parte del codigo ya que parte de un nodo y no de la raiz 28 | 29 | -------------------------------------------------------------------------------- /EJ5_Accionando_Toggle_switch.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from selenium import webdriver 3 | from selenium.webdriver.common.keys import Keys 4 | import time 5 | class usando_unittest(unittest.TestCase): 6 | 7 | def setUp(self): 8 | self.driver = webdriver.Chrome(executable_path=r"C:\Users\NAlvarez\Documents\explorer_driver\chromedriver.exe") 9 | 10 | def test_usando_toggle(self): 11 | driver = self.driver 12 | driver.get("https://www.w3schools.com/howto/howto_css_switch.asp") 13 | time.sleep(3) 14 | toggle = driver.find_element_by_xpath("//*[@id='main']/label[3]/div") 15 | toggle.click() 16 | time.sleep(3) 17 | toggle.click() 18 | time.sleep(3) 19 | 20 | def tearDown(self): 21 | self.driver.close() 22 | 23 | if __name__ == '__main__': 24 | unittest.main() -------------------------------------------------------------------------------- /EJ6_Usando_select.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from selenium import webdriver 3 | from selenium.webdriver.support.ui import Select 4 | from selenium.webdriver.common.keys import Keys 5 | import time 6 | class usando_unittest(unittest.TestCase): 7 | 8 | def setUp(self): 9 | self.driver = webdriver.Chrome(executable_path=r"C:\Users\NAlvarez\Documents\explorer_driver\chromedriver.exe") 10 | 11 | def test_usando_select(self): 12 | driver = self.driver 13 | driver.get("https://www.w3schools.com/howto/howto_custom_select.asp") 14 | time.sleep(3) 15 | select = driver.find_element_by_xpath("//*[@id='main']/div[3]/div[1]/select") 16 | opcion = select.find_elements_by_tag_name("option") 17 | time.sleep(3) 18 | for option in opcion: 19 | print("Value is: %s" % option.get_attribute("value")) 20 | option.click() 21 | time.sleep(1) 22 | seleccionar = Select(driver.find_element_by_xpath("//*[@id='main']/div[3]/div[1]/select")) 23 | seleccionar.select_by_value("10") 24 | time.sleep(3) 25 | 26 | 27 | if __name__ == '__main__': 28 | unittest.main() -------------------------------------------------------------------------------- /EJ7_Cambiar de ventana_o_pestaña.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from selenium import webdriver 3 | from selenium.webdriver.common.keys import Keys 4 | import time 5 | 6 | class usando_unittest(unittest.TestCase): 7 | def setUp(self): 8 | self.driver = webdriver.Chrome(executable_path=r"C:\Users\NAlvarez\Documents\explorer_driver\chromedriver.exe") 9 | 10 | def test_usando_select(self): 11 | driver = self.driver 12 | driver.get("http://www.google.com") 13 | time.sleep(3) 14 | driver.execute_script("window.open('');") 15 | time.sleep(3) 16 | driver.switch_to.window(driver.window_handles[1]) 17 | driver.get("http://stackoverflow.com") 18 | time.sleep(3) 19 | driver.switch_to.window(driver.window_handles[0]) 20 | time.sleep(3) 21 | 22 | if __name__ == '__main__': 23 | unittest.main() -------------------------------------------------------------------------------- /EJ8_Ir_a_la_pagina_anterio_o_la_siguiente.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from selenium import webdriver 3 | from selenium.webdriver.common.keys import Keys 4 | import time 5 | 6 | class usando_unittest(unittest.TestCase): 7 | def setUp(self): 8 | self.driver = webdriver.Chrome(executable_path=r"C:\Users\NAlvarez\Documents\explorer_driver\chromedriver.exe") 9 | 10 | def test_usando_select(self): 11 | driver = self.driver 12 | driver.get("http://www.google.com") 13 | time.sleep(3) 14 | driver.get("http://www.gmail.com") 15 | time.sleep(3) 16 | driver.get("http://www.youtube.com") 17 | time.sleep(3) 18 | driver.back() 19 | time.sleep(3) 20 | driver.back() 21 | time.sleep(3) 22 | driver.forward() 23 | time.sleep(3) 24 | 25 | if __name__ == '__main__': 26 | unittest.main() -------------------------------------------------------------------------------- /EJ9_usando_explicit_wait.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from selenium import webdriver 3 | from selenium.webdriver.common.by import By 4 | from selenium.webdriver.support.ui import WebDriverWait 5 | from selenium.webdriver.support import expected_conditions as EC 6 | 7 | 8 | class usando_unittest(unittest.TestCase): 9 | def setUp(self): 10 | self.driver = webdriver.Chrome(executable_path=r"C:\Users\NAlvarez\Documents\explorer_driver\chromedriver.exe") 11 | 12 | def test_usando_Explicit_wait(self): 13 | driver = self.driver 14 | driver.get("http://www.google.com") 15 | try: 16 | element = WebDriverWait(driver, 10).until( 17 | EC.presence_of_element_located((By.NAME, "q")) 18 | ) 19 | finally: 20 | driver.quit() 21 | 22 | if __name__ == '__main__': 23 | unittest.main() 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | #Explicit wait : Espera a que se ejecute ciertas condiciones para continuar corriendo el script 51 | #Implicit wait : Espera un cierto tiempo o espera a que se carguen sientos elementos para poder seguir su proceso 52 | 53 | #title_is 54 | #title_contains 55 | #presence_of_element_located 56 | #visibility_of_element_located 57 | #visibility_of 58 | #presence_of_all_elements_located 59 | #text_to_be_present_in_element 60 | #text_to_be_present_in_element_value 61 | #frame_to_be_available_and_switch_to_it 62 | #invisibility_of_element_located 63 | #element_to_be_clickable 64 | #staleness_of 65 | #element_to_be_selected 66 | #element_located_to_be_selected 67 | #element_selection_state_to_be 68 | #element_located_selection_state_to_be 69 | #alert_is_present -------------------------------------------------------------------------------- /Llenar formulario desde un excel/debug.log: -------------------------------------------------------------------------------- 1 | [1017/144320.692:ERROR:directory_reader_win.cc(43)] FindFirstFile: El sistema no puede encontrar la ruta especificada. (0x3) 2 | [1017/144415.693:ERROR:directory_reader_win.cc(43)] FindFirstFile: El sistema no puede encontrar la ruta especificada. (0x3) 3 | [1017/144440.854:ERROR:directory_reader_win.cc(43)] FindFirstFile: El sistema no puede encontrar la ruta especificada. (0x3) 4 | -------------------------------------------------------------------------------- /Llenar formulario desde un excel/ejemplo.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksiel99/Python-con-Selenium/09d9b96f1cae791d5c058239e557c3562af30bd3/Llenar formulario desde un excel/ejemplo.xlsx -------------------------------------------------------------------------------- /Llenar formulario desde un excel/extrear_datos.py: -------------------------------------------------------------------------------- 1 | 2 | from selenium import webdriver 3 | from selenium.webdriver.common.keys import Keys 4 | from openpyxl import load_workbook 5 | import time 6 | 7 | driver = webdriver.Chrome(executable_path=r"C:\dchrome\chromedriver.exe") 8 | driver.get("file:///C:/Users/alber/Documents/Canal%20Nicolas%20Alvarez/Selenium%20con%20Python%20Curso/Ejercicios/Llenar%20formulario%20desde%20un%20excel/form.html") 9 | time.sleep(3) 10 | 11 | 12 | filesheet = "./ejemplo.xlsx" 13 | wb = load_workbook(filesheet) 14 | hojas = wb.get_sheet_names() 15 | print(hojas) 16 | nombres = wb.get_sheet_by_name('Hoja 1') 17 | wb.close() 18 | 19 | for i in range(1,5): 20 | nomb, apell, edad = nombres[f'A{i}:C{i}'][0] 21 | print(nomb.value, apell.value, edad.value) 22 | time.sleep(1) 23 | driver.find_element_by_id("nom").send_keys(nomb.value) 24 | time.sleep(1) 25 | driver.find_element_by_id("ape").send_keys(apell.value) 26 | time.sleep(1) 27 | driver.find_element_by_id("edad").send_keys(str(edad.value)) 28 | time.sleep(1) 29 | driver.find_element_by_id("enviar").click() 30 | time.sleep(1) 31 | print('--- Datos enviados ---') 32 | 33 | driver.close() 34 | 35 | 36 | -------------------------------------------------------------------------------- /Llenar formulario desde un excel/form.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 |Usuario: 17 |
Contraseña: 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /config.cfg: -------------------------------------------------------------------------------- 1 | [General] 2 | chrome = C:\dchrome\chromedriver.exe 3 | 4 | [Paginas] 5 | google = https://www.google.com 6 | 7 | -------------------------------------------------------------------------------- /config.ini: -------------------------------------------------------------------------------- 1 | [General] 2 | chrome = C:\dchrome\chromedriver.exe 3 | 4 | [Paginas] 5 | google = https://www.google.com 6 | ;google = https://outlook.live.com 7 | 8 | -------------------------------------------------------------------------------- /img1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksiel99/Python-con-Selenium/09d9b96f1cae791d5c058239e557c3562af30bd3/img1.png -------------------------------------------------------------------------------- /img2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksiel99/Python-con-Selenium/09d9b96f1cae791d5c058239e557c3562af30bd3/img2.png -------------------------------------------------------------------------------- /img3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksiel99/Python-con-Selenium/09d9b96f1cae791d5c058239e557c3562af30bd3/img3.png -------------------------------------------------------------------------------- /multitareaconselenium.py: -------------------------------------------------------------------------------- 1 | import time 2 | from selenium import webdriver 3 | from threading import Thread, Barrier 4 | 5 | def func(threads): 6 | 7 | driver = webdriver.Chrome(executable_path=r"C:\dchrome\chromedriver.exe") 8 | driver.get(url) 9 | 10 | driver.find_element_by_id("email").send_keys("tu_corre") 11 | driver.find_element_by_id("pass").send_keys("tu_contraseña") 12 | ingresar = driver.find_element_by_name("login") 13 | 14 | threads.wait() 15 | ingresar.click() 16 | 17 | url='https://www.facebook.com/' 18 | 19 | numero_multitareas = 6 20 | 21 | barrier = Barrier(numero_multitareas) 22 | 23 | threads = [] 24 | 25 | for _ in range(numero_multitareas): 26 | i = Thread(target=func, args=(barrier,)) 27 | i.start() 28 | threads.append(i) 29 | 30 | for i in threads: 31 | i.join() -------------------------------------------------------------------------------- /scrooldown.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | import time 3 | 4 | driver =webdriver.Chrome(executable_path=r"C:\dchrome\chromedriver.exe") 5 | driver.get("https://www.amazon.com.mx/") 6 | time.sleep(3) 7 | driver.execute_script("window.scrollTo(0,document.body.scrollHeight)") 8 | time.sleep(5) 9 | driver.close() --------------------------------------------------------------------------------