CursosEmpresasBlogLiveConfPrecios

¡Hola, mundo!

Clase 6 de 24 • Curso de Introducción a Selenium con Python

Clase anteriorSiguiente clase
    JOHN YAUYO

    JOHN YAUYO

    student•
    hace 5 años

    Para el caso de que tu S.O. sea Ubuntu y tengas instalado el navegador Google Chrome debes correr previamente en la terminal:

    • sudo apt-get install chromium-chromedriver

    y tu setUpClass debe ser así:

    @classmethod def setUpClass(cls): cls.driver = webdriver.Chrome(executable_path='/usr/bin/chromedriver') driver = cls.driver driver.implicitly_wait(10)
      Andrés Corral

      Andrés Corral

      student•
      hace 5 años

      Uf, haber leido esto antes .... tenia instalado chromium pero no lo pude usar, tuve que instalar chrome

      Irvin Cabal

      Irvin Cabal

      student•
      hace 5 años

      que buena ayuda, gracias

    Juan Ignacio Echenique Olsina

    Juan Ignacio Echenique Olsina

    student•
    hace 5 años

    Buen dia les comparto mi codigo por si a alguien le sirve.

    # Con unittest nos podemos traer todas nuestras pruebas import unittest # Ayuda a orquestar cada una de las pruebas que estaremos # ejecutando junto con los reportes from pyunitreport import HTMLTestRunner # Para comunicarnos con el navegador usamos webdriver from selenium import webdriver class HelloWorld(unittest.TestCase): # Realiza todo lo necesario antes de empezar la prueba @classmethod # Decorador para que las distintas paginas corran en una sola pestaña def setUpClass(cls): cls.driver = webdriver.Chrome(executable_path=r"./chromedriver.exe") driver = cls.driver # esperamos 10 seg antes de realizar la siguiente accion driver.implicitly_wait(10) # Caso de prueba donde realizaremos una serie de acciones para que el navegador las automatice def test_hello_world(self): driver = self.driver driver.get('https://www.platzi.com') def visit_wikipedia(self): self.driver.get('https://www.wikipedia.com') # Cerramos el navegador una vez terminadas las pruebas @classmethod def tearDownClass(cls): cls.driver.quit() if __name__ == "__main__": unittest.main(verbosity = 2, testRunner = HTMLTestRunner(output = 'reportes', report_name = 'hello-world-report'))
      Miguel Angel Velazquez Romero

      Miguel Angel Velazquez Romero

      student•
      hace 5 años

      ¿En que SO lo ejecutaste?

      Juan Ignacio Echenique Olsina

      Juan Ignacio Echenique Olsina

      student•
      hace 5 años

      En window por? te dio algun error?

    Matías Candi

    Matías Candi

    student•
    hace 5 años
    selenium1.png
    selenium2.png
    Lo bueno de tener una pc lenta es que en estos casos se nota la diferencia. Casi un 50% :D
      Juan Antonio Aramburo Pasapera

      Juan Antonio Aramburo Pasapera

      student•
      hace 4 años

      Chale :'v

      Moises Abel Avila  Garcia

      Moises Abel Avila Garcia

      student•
      hace 3 años

      gracias

    Diego Cesar Lerma Torres

    Diego Cesar Lerma Torres

    student•
    hace 4 años

    Llevo literalmente una semana intentando hacer esta prueba. Uso WSL2, pero me daba error siempre que intentaba realizar la prueba (y simplemente no me abría la página de Chrome).

    Intenté usar Anaconda para instalar las librerías que necesitaba, ejecutar el programa desde la PowerShell, instalar todo tipo de entornos virtuales. Incluso intenté instalar una interfaz gráfica para la terminal de WSL en Windows (un proceso bastante laborioso y además muy inseguro, puesto que requiere otorgar permisos a este programa que no me gustaron).

    Al final mi solución fue instalar Ubuntu en una computadora que no es mi principal. Me funcionó perfecto en un sistema LInux.

    ¡Además, será mi oportunidad para familizarme con este sistema operativo!

      Mauricio Gonzalez Falcon

      Mauricio Gonzalez Falcon

      student•
      hace 4 años

      Total, llevo 2 semanas en este lio! Pero retomo hoy la prueba a ver si con interfaces gráficas y reinstalar wsl2 funciona todo.

      Santiago Ramos Morales

      Santiago Ramos Morales

      student•
      hace 3 años

      Me funcionó sin el teardown

    Ángel Ricardo Estrada Sevilla

    Ángel Ricardo Estrada Sevilla

    student•
    hace 5 años

    El profesor menciona que se debe colocar la liga completa, en mi caso uso windows 10, uso python 3.8 y no fue necesario.

    self.driver = webdriver.Chrome(executable_path = r'./chromedriver.exe')
      Jose Reinaldo Roca Cruz

      Jose Reinaldo Roca Cruz

      student•
      hace 5 años

      Si en realidad no es necesario colocar la ruta completa,lo único importante en window es colocar el .exe

    Vidale C.

    Vidale C.

    student•
    hace 4 años

    Si te aparece el siguiente error: DeprecationWarning: executable_path has been deprecated, please pass in a Service object self.driver = webdriver.Chrome(executable_path=r"./chromedriver.exe")
    Te comparto la solución que a mi me sirvio (Estoy usando windows 11 y la feca es 20/02/2022)

    • Instalar la siguiente librería

    pip3 install webdriver_manager

    • Importar en el código

    from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager

    • Cambiar la linea self.driver donde llamas el chromedriver por

    self.driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))

    y listo, todo el demás código que se muestra en el vídeo queda igual.

      Bruno Guillaume Hernández Villamil

      Bruno Guillaume Hernández Villamil

      student•
      hace 4 años

      Perfecto, este es el que funciona para Windows, muchas gracias. Pero me queda duda de qué generaba el error, ¿es por la versión de Chrome?

      Luis Antonio Ibarra Salgado

      Luis Antonio Ibarra Salgado

      student•
      hace 4 años

      en Mac igual me soluciono el problema, gracias!!

      Solo una pregunta, entonces si tengo el manager ya no tengo que descargar el driver que el profesor descomprimío? o lo tengo que seguir descargando?

    Sebastian Rueda

    Sebastian Rueda

    student•
    hace 3 años

    Si están en Windows y les sale un error, el problema está en el ejecutable y en que el término executable_path ya está deprecado.

    Para solucionarlo primero onstalé lo siguiente:

    pip3 install webdriver-manager

    Y luego mi código quedó así:

    import unittest from pyunitreport import HTMLTestRunner from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager class HelloWorld(unittest.TestCase): @classmethod def setUpClass(cls): cls.driver = webdriver.Chrome(service = Service(ChromeDriverManager().install())) cls.driver.implicitly_wait(10) def test_hello_world(self): self.driver.get('https://www.netflix.com') def test_visit_wikipedia(self): self.driver.get('https://www.wikipedia.org') @classmethod def tearDownClass(cls) -> None: cls.driver.quit() if __name__ == "__main__": unittest.main(verbosity = 2, testRunner = HTMLTestRunner(output = 'reports', report_name = 'hello-world-report'))

    Con esto no hay necesidad de descargar el chromedriver en sus computadoras y tampoco necesitan usar WSL porque todo corre en Powershell. Espero les sirva.

      Magno Stiven Bueno

      Magno Stiven Bueno

      student•
      hace 3 años

      Esto si me solucionó !!!

      Jafet Pintle

      Jafet Pintle

      student•
      hace 3 años

      Grande! Lo estaba tratando de hacer en WSL pero este no me permitia abrir el chrome de windows directamente y era mucho enrollo. Tu código me funcionó de maravilla:)

    Alexander Silvera

    Alexander Silvera

    student•
    hace 5 años

    Hola paso también la solución al error que tenia al no poder abrir el navegador y correr los tests del scripts del hola mundo:

    import unittest from pyunitreport import HTMLTestRunner from selenium import webdriver class HelloWorld(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome(executable_path='./chromedriver') driver = self.driver driver.implicitly_wait(10) def test_hello_world(self): driver = self.driver driver.get('http://demo-store.seleniumacademy.com/') def test_visit_wikipedia(self): self.driver.get('https://www.wikipedia.org') def tearDown(self): self.driver.quit() if __name__ == "__main__": unittest.main(verbosity=2)

    el error era de indentación en la última línea de código, recien lo pude ver gracias al apoyo del profesor Héctor. Lo paso por si alguien tiene el mismo problema y no ve cual puede ser el error, saludos y gracias Héctor.

      Juan Camilo Sarmiento Reyes

      Juan Camilo Sarmiento Reyes

      student•
      hace 5 años

      Gracias!, Tienes un typo con las palabras class y def falta un espacio con la definición del nombre de la clase y las funciones respectivamente

    Esteban parra

    Esteban parra

    student•
    hace 5 años

    Una duda? en que momento inicializo e instancio my clase HelloWorld y ejecuto los medodos? o cuando heredo de unittest el ejecuta en orden descendente las funciones de mi clase HelloWorld??

      Daniel Enrique Merchan Merchan

      Daniel Enrique Merchan Merchan

      student•
      hace 5 años

      Tengo esta misma duda... No entiendo donde se inicializaron la clase y donde se llamaron los métodos.

      Alfonso Morán

      Alfonso Morán

      student•
      hace 4 años

      misma duda

    Valentin Francisco Blanco

    Valentin Francisco Blanco

    student•
    hace 5 años

    Que hace verbosity = 2?? (en la linea 25)

      Héctor Daniel Vega Quiñones

      Héctor Daniel Vega Quiñones

      teacher•
      hace 5 años

      verbosity es una bandera que te da detalles sobre la salida al resultado final de tu script, si añades el parámetro 2 entonces te dará aún más detalles.

      Puedes probar el script eliminando esta bandera y colocando 1 o 2 cómo parámetro :)

    Korpi delfin

    Korpi delfin

    student•
    hace 5 años

    Les comparto mi código ya con comentarios. Entorno : windows 10 + python 3.8

    import unittest from pyunitreport import HTMLTestRunner from selenium import webdriver class HelloWorld(unittest.TestCase): #va a ejecutar todo lo necesario antes de hacer una prueba #va a preparar el entorno de la prueba @classmethod # para que abra las pestañas en una misma ventana def setUpClass(cls): cls.driver = webdriver.Chrome(executable_path = r'.\chromedriver.exe') driver = cls.driver driver.implicitly_wait(10) #aquí va lo que queremos que la prueba haga def test_hello_world(self): driver = self.driver driver.get('https://platzi.com/') def test_visit_wikipedia(self): self.driver.get('https://es.wikipedia.org/') #cierra el navegador para evitar #fuga de recursos @classmethod #decorador para que no se cierre la ventana después de la primera prueba def tearDownClass(cls): cls.driver.quit() if __name__ == "__main__": unittest.main(verbosity = 2, testRunner = HTMLTestRunner(output = 'reportes', report_name='hello-world-report'))
      Michelle Duque De La Rosa

      Michelle Duque De La Rosa

      student•
      hace 4 años

      Muchas gracias

    Adrian Gutierrez Ramirez

    Adrian Gutierrez Ramirez

    student•
    hace 5 años

    Hola! Estoy siguiendo el curso con Ubuntu corriendo en WSL2, estuve un rato navegando y me encontre con que la unica forma de correr el driver de Chrome con esta configuración es llamandolo desde la ruta contenedora en Windows, al intentar ejecutar el codigo me sale el siguiente error

    chromedriver.png
    No he podido solucionarlo y en la red no hay mucha información, un comentario de hace 4 meses dice que no es posible correr Selenium en WSL2 pero por el mensaje de error creo que solo se debe a que no logra ejecutar el driver. ¿Tiene alguna solución?

      Daniel Verdugo

      Daniel Verdugo

      student•
      hace 5 años

      tengo el mismo error, espero alguien pueda ayudarnos.

      Alan Vazquez

      Alan Vazquez

      student•
      hace 5 años

      Creo que el error es debido a que desde WSL2 no puede abrir el navegador, a menos que lo tengas instalado en tu distribucion (Las aplicaciones que tienes en Windows y en tu distribucion de WSL2 son diferentes) Incluso aunque procedas con la instalacion norma de chrome ( o firefox ) dentro de WSL hay otro problema... Nativamente no es posible abrir aplicaciones GUI ( O con interfaz ) Para solucionar esto te recomiendo leer lo siguiente WSL2 + GUI Setup

    RRHH Holistor

    RRHH Holistor

    student•
    hace 3 años

    dejare la palabra frustrante, porque es eso lo que merece, 20 error me saltan en cada clase y el instructor dicta un montón de cosas sin dar una buena explicación. no deben olvidar que la persona que ingresa al curso no sabe y quiere aprender para que sirve cada cosa. abandono el curso.

    Isay Humberto Lucas Hernandez

    Isay Humberto Lucas Hernandez

    student•
    hace 4 años

    Hola amigos, . A mi me causó mucha curiosidad el porque al agregar el decorador @classmethod nuestras pruebas (en este caso visitas al sitio web de Platzi y Wikipedia) se hicieron en la misma ventana. Investigando encontré lo siguiente: . Los métodos setUp y tearDown se ejecutan cada vez que se lanza una prueba (métodos que empiezan con el prefijo test_). Por ello nuestra ventana se abre para visitar un sitio, se cierra y se vuelve a abrir para visitar el otro. . Para evitar esto, se agrega el decorador @classmethod, este decorador permite recibir la clase como primer parámetro dentro de un método y ejecutar directamente dicho método sin depender de la instancia de la clase que lo contiene. Wow, wow, wow! Espera, yo también me confundí cuando leí esto por primera vez. Pero puedes encontrar una explicación más clara justo AQUI. . Pero la magia no ocurre solo con el decorador @classmethod, si intentas ejecutar las pruebas aún con el decorador (y la debida modificación de los métodos setUp y tearDown) verás que las pruebas aún ocurren en ventanas separadas 😱😱 Esto se debe a que parte de la magia va de la mano con los métodos setUpClass y tearDownClass. La razón es porque 2 últimos métodos se ejecutan para toda la clase y no solo para cada método de pruebas. WOOOOOW! . Si lo vemos con un flujo encontramos lo siguiente:

    Captura de Pantalla 2021-10-12 a la(s) 13.10.56.png
    Espero les haya servido la explicación, ¡saludos y nunca paren de aprender! 💚💚💚

      Juan Sebastian Ladino Mendieta

      Juan Sebastian Ladino Mendieta

      student•
      hace 3 años

      tengo una pregunta, si no utilizo el decorador me funciona el código, pero si lo uso la segunda prueba no me funciona me sale este error:

      "MaxRetryError

      HTTPConnectionPool(host='localhost', port=56367): Max retries exceeded with url: /session/57d2dff66a7bc97b8481527bf6842cd4/url (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused'))"

    Brady Principe Quiñones Principe Quiñones

    Brady Principe Quiñones Principe Quiñones

    student•
    hace 5 años

    Hola, me sale este error

    ModuleNotFoundError: No module named 'pyunitreport'
      Jose Reinaldo Roca Cruz

      Jose Reinaldo Roca Cruz

      student•
      hace 5 años

      Buenas brandy,instalaste todas la librerías de la anterior clase,si es así me puedes mostrar tu código,y los comandos que utilizas para acceder a la terminal

      Brady Principe Quiñones Principe Quiñones

      Brady Principe Quiñones Principe Quiñones

      student•
      hace 5 años

      Hola, importe lo que indicó, mi codigo es el sigueinte:

      import unittest from pyunitreport import HTMLTestRunner from selenium import webdriver class HelloWorld(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome(executable_path= r'D://otros//Selenium//chromedriver_win32//chromedriver.exe') driver = self.driver driver.implicitly_wait(10) def test_hello_world(self): driver = self.driver driver.get('https://www.platzi.com') def tearDown(self): self.driver.quit() if __name__ == "__main__": unittest.main(verbosity = 2, testRunner = HTMLTestRunner(output= 'reportes',report_name= 'helllo_world_report'))
    Luis Enrique Sanchez Piñerua

    Luis Enrique Sanchez Piñerua

    student•
    hace 5 años

    Si quieren una forma mas sencilla de descargar el driver, pueden descargarse con pip la libreria “webdriver_manager”.

    from webdriver_manager.chrome import ChromeDriverManager driver = webdriver.Chrome(ChromeDriverManager().install())
      Laura Itzel Hernández Fernández

      Laura Itzel Hernández Fernández

      student•
      hace 4 años

      tenia este error: (cannot find Chrome binary) y tu aporte me ayudo. gracias

      Fredy Alexander Izquierdo Dominguez

      Fredy Alexander Izquierdo Dominguez

      student•
      hace 4 años

      Tenía el error WebDriverException Message: Service ./chromedriver unexpectedly exited. Status code was: -5, pero tu aporte me fue de gran ayuda para solucionarlo. Gracias!

    Brandon Gutierrez

    Brandon Gutierrez

    student•
    hace 5 años

    Me aparece un error si me podrian ayudar se los agardezco mucho,

    import unittest from pyunitreport import HTMLTestRunner from selenium import webdriver class HellorWorld(unittest.TestCase): def setUp(self): #ejecuta todo lo necesario antes de la prueba self.driver= webdriver.chrome(execute_path= r"/chromedriver.exe") driver = self.driver driver.implicitly_wait(10) def test_hello_world(self): #serie de acciones para que el navegador se automatice driver=self.driver driver.get("https://www.platzi.com") def tearDown(self): self.driver.quit() #cerrar ventana del navegador para cualquier prueba if __name__== "__main__": unittest.main(verbosity=2,testRunner=HTMLTestRunner(output="reportes",report_name="hello-world-report"))

    Esto me aparece al ejecutar Traceback (most recent call last): File "hello_world.py", line 2, in <module> from pyunitreport import HTMLTestRunner ModuleNotFoundError: No module named 'pyunitreport'

      Massimo Di Berardino

      Massimo Di Berardino

      student•
      hace 5 años

      Hola Brandon, tienes un typo en la línea 2, en realidad debería ser: from PyUnitReport import HTMLTestRunner escrito de esa manera con mayúsculas

      Miguel Andres Rendon Reyes

      Miguel Andres Rendon Reyes

      student•
      hace 4 años

      Men, es un cuento complejo, pero básicamente lo que tienes que hacer es: Revisa que tengas una versión de python de la 3.8 para abajo, si no, entonces tienes hacer a como dé lugar una actualización o regresión a la versión 3.8 e instalar el módulo: pyunitreport.

      Claro está que también tienes que verificar que tengas instalado pyunitreport

    José Manuel Piña Rodríguez

    José Manuel Piña Rodríguez

    student•
    hace 5 años

    He revisado los aportes y varios hemos tenido el mismo problema pero aun no se ha tenido solucion, es con respecto a la libreria pyunitreport que arroja el siguiente error . ModuleNotFoundError: no module named ‘pyunitreport’ Esta fue instalada en consola, en la caperta del archivo pero sigue sin reconocerla. Este es mi codigo

    import unittest from pyunitreport import HTMLTestRunner from selenium import webdriver class HelloWorld(unittest.TestCase): @classmethod def setUpClass(cls): cls.driver = webdriver.Chrome(executable_path = r'./chromedriver.exe') driver = cls.driver driver.implicitly_wait(10) def test_hello_world(self): driver = self.driver driver.get('https://www.platzi.com') def test_visit_wikipedia(self): self.driver.get('https://www.triunico.com') @classmethod def tearDownClass(cls): cls.driver.quit() if __name__ == '__main__': unittest.main(verbosity=2, testRunner= HTMLTestRunner(output = 'reportes', report_name = 'hello-world-report'))

    Nota : Mi codigo realiza las peticiones de ambos sitios y me genera el reporte, aun asi en mi editor de codigo se mantiene el error.

      Victor Luis Landaeta Jimenez

      Victor Luis Landaeta Jimenez

      student•
      hace 5 años

      Hola, me parece que debes de quitar el .exe cuando llamas al driver chrome.

      Saludos!!!

      Andrés Felipe Mesa David

      Andrés Felipe Mesa David

      student•
      hace 5 años

      Hola! A mí me estaba pasando igual y logré solucionarlo de la siguiente manera:

      Notmodule.png

      *Debes tener instalado pip y ubicarte la carpeta donde tengas tu código

      1. Instalo el entorno virtual con el comando virtualenv venv
      virtualenv.png
      1. Activas el entorno virtual con venv\Scripts\activate.bat
      activavenv.png
      1. En ese ambiente virutal instalas selenium y pyunitreport
      instalseleandpyunit.png
      1. Con pip freeze revisas que te hayan quedado instaladas y luego ejecutas
      run.png
    Mauricio Gonzalez Falcon

    Mauricio Gonzalez Falcon

    student•
    hace 4 años

    Haré un tutorial de como ver el curso desde windows sub-system for linux.

    Espero pronto les guste :D

    daniel saltarin castillo

    daniel saltarin castillo

    student•
    hace 5 años

    Por si a alguien le aparece un error al importar selenium o pyunitreport en visual studio code, esto es un error visual del editor, no genera ningún error al tratar de ejecutar el script, aunque si lo desea puede usar otro IDE como PyCham.

Escuelas

  • Desarrollo Web
  • English Academy
  • Marketing Digital
  • Inteligencia Artificial y Data Science
  • Ciberseguridad
  • Liderazgo y Habilidades Blandas
  • Diseño de Producto y UX
  • Contenido Audiovisual
  • Desarrollo Móvil
  • Diseño Gráfico y Arte Digital
  • Programación
  • Negocios
  • Blockchain y Web3
  • Recursos Humanos
  • Finanzas e Inversiones
  • Startups
  • Cloud Computing y DevOps

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads