Lista de comandos para WebDriver con su descripción, comparación y ejemplo: https://www.techbeamers.com/important-selenium-webdriver-commands/
0:00/3:54
Lista de comandos para WebDriver con su descripción, comparación y ejemplo: https://www.techbeamers.com/important-selenium-webdriver-commands/
import unittest
from selenium import webdriver
from time import sleep
class CompareProducts(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome(executable_path = r'.\chromedriver.exe')
driver = self.driver
driver.implicitly_wait(30)
driver.maximize_window()
driver.get("https://www.google.com/")
def test_browser_navigation(self):
driver = self.driver
search_field = driver.find_element_by_name('q')
search_field.clear()
search_field.send_keys('platzi')
search_field.submit()
driver.back()#retroceder navegador
sleep(3) #espera 3 segundos
driver.forward() #avanzar
sleep(3)
driver.refresh() # actualizar página
sleep(3)
def tearDown(self):
self.driver.implicitly_wait(3)
self.driver.close()
if __name__ == "__main__":
unittest.main(verbosity = 2)
Hola. estoy tratando de acceder a Platzi con Selenium pero no me permite, me detecta como un Bot, alguna solución para este tipo de sitios?
Para que el tiempo de espera no sea tan robótico se puede usar la librería random.
Se importa la librería: import random
Sentencia: sleep(random.uniform(5.0, 10.0))
Tiempo de espera entre 5 a 10 segundos, por ejemplo. Saludos!
mi internet es tan lento que no necesito sleep XD
Comparto mi codigo fuente
import unittest
from pyunitreport import HTMLTestRunner
from selenium import webdriver
from time import sleep
class Alerts(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome("D:\webdriver-chrome/chromedriver.exe")
driver = self.driver
driver.implicitly_wait(50)
driver.maximize_window()
driver.get('https://google.com/')
def test_browser_navigation(self):
driver = self.driver
search_field = driver.find_element_by_name('q')
search_field.clear()
search_field.send_keys('platzi')
search_field.submit()
driver.back() #Regresar a la pagina anterior
sleep(3)
driver.forward() #Avanzar a la pagina posterior
sleep(3)
driver.refresh() #Actualizar la pagina
sleep(3)
def tearDown(self):
self.driver.quit()
if __name__ == "__main__":
unittest.main(verbosity=2,testRunner=HTMLTestRunner(output="reportes", report_name="prueba_asssert"))
Las clases de este módulo fueron muy sencillas, entendibles y bien explicadas. Si sabes inglés es muy fácil de entender qué es lo que hacen las instrucciones de Selenium.
En mi caso, hubo veces que me sentí obligado a pone un sleep, porque de lo tan rápido que va, no llega a cargar la página y me da un error.
noo, Profe que cool, esto esta magnifico, lo estoy implementando en una encuesta diaria que se hace en la empresa, ahora necesito que esto se ejecute diario ¿Como se haría?
No se podia usar el implicitly_wait como lo veniamos haciendo en lugar del sleep ?
Gerardo Alberto Soto Alvarez del Castillo
Lista de comandos para WebDriver con su descripción, comparación y ejemplo: https://www.techbeamers.com/important-selenium-webdriver-commands/
Fredy Mendoza Vargas
Gracias por el aporte
Miguel Angel Reyes Moreno
Maravilloso aporte, ¡gracias!
Korpi delfin
Jorge Chirinos
Como puedo pegar mi cogido como este?
simplemente copiar y pegar?
Miguel Angel Velazquez Romero
Así:
Paso 1: Precinas el boron que dice codigo. Paso 2: Copias y pegas el codigo entre las 3 colmillas. Paso 3: Le indicas que lenjuage es de esta forma
print("Hola Mundo")
Hernan Felipe Diaz
Hola. estoy tratando de acceder a Platzi con Selenium pero no me permite, me detecta como un Bot, alguna solución para este tipo de sitios?
Lautaro Cabral
Freddie: Te atreves a usar mis propios hechizos contra mí, Potter?
Omar Rodríguez Aldama
puedes agregar mas tiempo y pausas a las acciones, agregar un proxy rotativo, una vpn rotativa, pero lo mas importante es el tiempo en el que envias tus acciones
Luis Antonio Ibarra Salgado
mi internet es tan lento que no necesito sleep XD
estefany Liza
Miguel Angel Reyes Moreno
Las clases de este módulo fueron muy sencillas, entendibles y bien explicadas. Si sabes inglés es muy fácil de entender qué es lo que hacen las instrucciones de Selenium.
Emilio Ciappi
En mi caso, hubo veces que me sentí obligado a pone un sleep, porque de lo tan rápido que va, no llega a cargar la página y me da un error.
Jhonatan David Ibarra Lavado
noo, Profe que cool, esto esta magnifico, lo estoy implementando en una encuesta diaria que se hace en la empresa, ahora necesito que esto se ejecute diario ¿Como se haría?
jason alejandro martinez jimenez
creo que se podría hacer como un script bash en la terminal de comandos, dando la orden de que ejecute tu script de python diariamente a tal hora. :D
Juan Antonio Aramburo Pasapera
Puedes agendar que se ejecuten scripts recurrentemente con crontab que está en practicamente todas las distribuciones de Linux. Deberás tener tu computadora encendida, claro.
Sebastián Andrade
No se podia usar el implicitly_wait como lo veniamos haciendo en lugar del sleep ?
Héctor Daniel Vega Quiñones
ProfesorDe hecho utilizar sleep es una mala práctica en general, lo mejor es usar pausas explícitas o implícitas.
Omar Rodríguez Aldama
import unittest from pyunitreport import HTMLTestRunner from selenium import webdriver class CompareProducts(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome(executable_path='./chromedriver') driver = self.driver driver.implicitly_wait(30) driver.maximize_window() driver.get('https://www.google.com/') def test_browser_navigation(self): driver = self.driver search_field = driver.find_element_by_id('q') search_field.clear() search_field.send_keys('Platzi') search_field.submit() driver.back() driver.forward() driver.refresh() def tearDown(self): self.driver.close() if __name__ == '__main__': unittest.main(verbosity=2, testRunner= HTMLTestRunner(output= 'reports', report_name= 'hello-world-report'))
Jorge Heli Rueda Uribe
¿Cual sería entonces la diferencia entre driver.implicitly_wait(30) y sleep(3)? Gracias y saludos.
Katy García Bedoya
Básicamente, sleep(3) pone la ejecución de selenium, a dormir por exactamente el tiempo definido, en este caso 3. Si el elemento se encuentra antes de ese tiempo, la ejecución del código, no puede continuar antes de 3, por eso usar éste método, para esperar por elementos web, es una mala práctica. Mientras que con driver.implicitly_wait(30), se espera un máximo de 30 a que el elemento exista, si ésto sucede antes, la ejecución del programa continúa a partir del momento en que el elemento fué encontrado, sin esperar el tiempo que le falta para llegar a 30.
Jorge Heli Rueda Uribe
Excelente. ¡Muchas gracias!
Esteban Henao
Cual es la diferencia entre una pausa
sleep(3)
y una pausa implicita como
driver.implicitly_wait(15)
David Fernando Prieto Ayala
<code> No se pero a mi no me funciona el sleep
Camilo Cadavid Cardona
cuando uso
search_field('platzi')
arroja search_field('platzi') TypeError: 'WebElement' object is not callable
tuve que hacer la prueba con
search_field.send_keys('platzi')
Miguel Andres Rendon Reyes
El clásico sleep, puede ser contra producente para hacer automatización, con lo que para eso podemos importar otros módulos que se verán más adelante.
Miguel Andres Rendon Reyes
Para trabajar con los elementos del navegador como retroceder utilizamos: instancia.forwad() y shaaaa, luego para retroceder, solo tenemos que poner: instancia.back()
Cristian David Restrepo Marin
import unittest from selenium import webdriver from time import sleep #este modulo es para realizar las pausas y ver lo que sucede en el navegador class NavigationTest(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome(executable_path=r'./chromedriver.exe') driver = self.driver driver.implicitly_wait(30) driver.maximize_window() driver.get('https://google.com/') def test_browser_navigation(self): driver = self.driver #identificamos la barra de busqueda search_field = driver.find_element_by_name('q') #limpiamos search_field.clear() #enviamos el termino de busqueda search_field.send_keys('Platzi') #envio la busqueda search_field.submit() #retrocedo una pagina atras en el navegador driver.back() #pongo una pausa para ver lo que hace el navegafor sleep(3) #avanzo una pagina adelante driver.forward() #pongo una pausa para ver lo que hace el navegafor sleep(3) #refresco la ventana del navegador driver.refresh() #pongo una pausa para ver lo que hace el navegafor sleep(3) def tearDown(self): self.driver.quit() if __name__ == '__main__': unittest.main(verbosity=2)
Miguel Angel Reyes Moreno
23 comandos esenciales de Selenium WebDriver
En esta clase pudimos navegar en la web de manera automática
automatic_navigation.py
import unittest from pyunitreport import HTMLTestRunner from selenium import webdriver from selenium.webdriver.chrome.options import Options class NavigationTest(unittest.TestCase): @classmethod def setUpClass(cls): options = Options() options.add_argument('--headless') options.add_argument('--no-sandbox') options.add_argument('--disable-dev-shm-usage') cls.driver = webdriver.Chrome(executable_path = '/usr/bin/chromedriver' , options=options) driver = cls.driver driver.get('https://google.com') def test_browser_navigation(self): driver = self.driver search_field = driver.find_element_by_name('q') search_field.clear() search_field.send_keys('platzi') search_field.submit() driver.back() #Retroceder en la navegación web driver.forward() #Avanzar en la navegación web driver.refresh() #Actualizar ventana del navegador @classmethod def tearDownClass(cls): cls.driver.quit() if __name__ == '__main__': unittest.main(verbosity = 2)
DAVID EDUARDO BAEZ SANCHEZ
Fredy Mendoza Vargas
Muchas gracias
import unittest from selenium import webdriver from time import sleep class CompareProducts(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome(executable_path = r'.\chromedriver.exe') driver = self.driver driver.implicitly_wait(30) driver.maximize_window() driver.get("https://www.google.com/") def test_browser_navigation(self): driver = self.driver search_field = driver.find_element_by_name('q') search_field.clear() search_field.send_keys('platzi') search_field.submit() driver.back()#retroceder navegador sleep(3) #espera 3 segundos driver.forward() #avanzar sleep(3) driver.refresh() # actualizar página sleep(3) def tearDown(self): self.driver.implicitly_wait(3) self.driver.close() if __name__ == "__main__": unittest.main(verbosity = 2)
Comparto mi codigo fuente
import unittest from pyunitreport import HTMLTestRunner from selenium import webdriver from time import sleep class Alerts(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome("D:\webdriver-chrome/chromedriver.exe") driver = self.driver driver.implicitly_wait(50) driver.maximize_window() driver.get('https://google.com/') def test_browser_navigation(self): driver = self.driver search_field = driver.find_element_by_name('q') search_field.clear() search_field.send_keys('platzi') search_field.submit() driver.back() #Regresar a la pagina anterior sleep(3) driver.forward() #Avanzar a la pagina posterior sleep(3) driver.refresh() #Actualizar la pagina sleep(3) def tearDown(self): self.driver.quit() if __name__ == "__main__": unittest.main(verbosity=2,testRunner=HTMLTestRunner(output="reportes", report_name="prueba_asssert"))
Entendido
import unittest from selenium import webdriver from api_data_mock import ApiDataMock from selenium.webdriver.support.ui import Select # Modulo para poder seleccionar del dropdown from time import sleep class NavigationTest(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome(executable_path = r'./chromedriver.exe') driver = self.driver driver.implicitly_wait(30) driver.maximize_window() driver.get('https://google.com/') def test_browser_navigation(self): driver = self.driver search_field = driver.find_element_by_name('q') #Borrar lo que hay en la barra de busqueda search_field.clear() search_field.send_keys('cursos flask') search_field.submit() #Par retorceder driver.back() sleep(1) #Para avanzar driver.forward() sleep(1) #Para refrescar driver.refresh() sleep(1) def tearDown(self): self.driver.implicitly_wait(5) self.driver.close() if __name__ == '__main__': unittest.main(verbosity=2)