Selenium Automatización de navegadores web

Selenium Automatización de navegadores web

El selenio se utiliza para automatizar tareas aburridas; automatiza los navegadores. Desde navegar la web hasta iniciar sesión automáticamente en cuentas hasta crear bots para varias tareas se puede lograr utilizando Selenium.

En primer lugar, instalemos las dependencias:

PIP Instalar selenio
PIP Instale WebDriver-Manager

Navegando por la web

Importamos las dependencias:

Desde Selenium Import WebDriver
de webdriver_manager.cromedrivermanager
Luego inicializamos el webdriver:
controlador = webdriver.Chrome (Chromedrivermanager ().instalar())

En primera instancia, intentemos navegar por una página web utilizando el método get (). El método get () abrirá la página web o la URL que se ingresó; Tenga en cuenta que se debe proporcionar el enlace completo para que esto funcione.

conductor.Get ("https: // duckduckgo.com/")

Supongamos que quería maximizar la ventana con el maximize_window () método y no hacer que Python se ejecute a través del resto del código; Entonces usarías el implícitamente_wait () método para pausar.

conductor.maximize_window ()
conductor.implícitamente_wait (4)

Si desea información en el sitio web, puede usar el método de título para obtener el nombre o el título del sitio web, el método Current_URL para obtener la URL y el Page_Source para obtener el código HTML de la página.

Impresión (controlador.título)
Impresión (controlador.actual_url)
Impresión (controlador.fuente de la página)

Para ingresar un texto en la barra de búsqueda, primero debemos intentar identificar la barra de búsqueda utilizando el "inspeccionarBotón "(Haga clic con el botón derecho -> Inspeccionar).

Para Duckduckgo.com, hay una identificación disponible, pero también puede obtener otros atributos. El siguiente método que usamos es el método find_element_by_id (). El propósito de este método es seleccionar el elemento de preocupación.

Search_bar = controlador.find_element_by_id ("search_form_input_homepage")

Sin embargo, puede reemplazar esto con cualquiera de los otros atributos. Por ejemplo, si tiene el nombre disponible, use el find_elements_by_name () método. No tuvimos que usar la identificación; podríamos haber usado algo por completo si hubiéramos querido. Por ejemplo, podríamos haber usado el nombre de la siguiente manera:

Search_bar = controlador.find_element_by_name ("Q")

Dado que hemos localizado la barra de búsqueda, ahora podemos ingresar una pieza de texto usando el send_keys () método.

barra de búsqueda.send_keys ("Seleniumhq")

Teóricamente, lo que haríamos es hacer clic en el botón siguiente. Asi que que hacemos? Si, lo has adivinado! Metectamos los elementos y encontramos la identificación u otro atributo del botón siguiente. Luego, usamos el método Click () para hacer clic en el botón que hemos seleccionado usando un atributo (como ID).

botón = controlador.find_element_by_id ("search_button_homepage")
botón.hacer clic()

En este punto, obtienes una lista de sitios web; Es muy parecido a escribir Seleniumhq en la barra de búsqueda del Duckduckgo.COM Sitio y presionando el botón siguiente. Ahora, intentemos hacer clic en la primera página que obtenemos. Aquí, voy a usar XPath, pero puedes usar cualquiera de los atributos. Tenga en cuenta que al usar XPATH, las comillas en el interior son solteras y exteriores son dobles ("//*[@id = 'r1-0']/div/h2/a [1]").

página = controlador.find_element_by_xpath ("//*[@id = 'r1-0']/div/h2/a [1]")
página.hacer clic()

Iniciar sesión en una cuenta de correo electrónico

Ahora, supongamos que queremos iniciar sesión en una cuenta de correo electrónico. Como siempre, comenzamos a importar los módulos necesarios e inicializarlos como lo hicimos para navegar por una página web. Aquí también importaremos el tiempo.

Desde Selenium Import WebDriver
de webdriver_manager.cromedrivermanager
tiempo de importación
controlador = webdriver.Chrome (Chromedrivermanager ().instalar())
conductor.Get ("https: // www.gmail.com/")
conductor.maximize_window ()
conductor.implícitamente_wait (4)
usuario = controlador.find_element_by_xpath ("//*[@id = 'IdentifierID']")
usuario.send_keys ("[email protected] ")
Siguiente = controlador.find_element_by_xpath ("//*[@id = 'IdentifierNext']/div/button/div [2]")
próximo.hacer clic()

A continuación, vamos a usar el tiempo.dormir() Método para evitar errores de sincronización (a veces, lleva más tiempo cargar una página, y mientras se carga, el resto del script se ejecuta y se informa un error). En un intento por evitar errores de sincronización, le daremos tiempo para cargar todo.

tiempo.dormir (3)
contraseña = controlador.find_element_by_xpath ("//*[@id = 'contraseña']/div [1]/div/div [1]/entrada")
contraseña.send_keys ("contraseña1.")
next2 = controlador.find_element_by_xpath ("//*[@id = 'PasswordNext']/Div/Button/Div [2]")
Next2.hacer clic()

Enviar correos electrónicos usando Selenium

Para enviar correos electrónicos, necesitamos dos partes: cómo iniciar sesión en Gmail desde la sección anterior y cómo enviar correos electrónicos desde esta sección. Enviar un correo electrónico es tan fácil como navegar por la web o incluso iniciar sesión en Gmail. Una vez más, elegimos el método find_element_by_xpath () o uno similar, como find_element_by_id () o otro para encontrar cada componente del mensaje que se enviará: el botón de composición, la barra de entrada de destino, la barra de entrada del sujeto, el cuerpo del cuerpo , y el botón Enviar. Debemos localizarlos, llenarlos con texto cuando sea necesario y hacer clic en los botones. Suficientemente simple. Así que vamos a intentarlo:

Primero, busque el botón de composición con XPATH y luego haga clic en él:

tiempo.dormir (1)
compose_button = controlador.find_element_by_xpath ("//*[@id = ': 2p']/div/div")
compose_button.hacer clic()

A continuación, agregemos una dirección de destino en la barra de entrada de la dirección de destino:

tiempo.dormir (2)
to_input_bar = controlador.find_element_by_id (': 8c')
to_input_bar.send_keys ("[email protected] ")

Ahora agregamos un sujeto, un cuerpo y hacemos clic en el botón Enviar:

sujeto = controlador.find_element_by_id (': 7u')
sujeto.send_keys ("prueba de correo electrónico")
cuerpo = conductor.find_element_by_xpath ("//*[@id = ': 8z']")
cuerpo.send_keys ("Este es un mensaje automatizado enviado usando Selenium.")
send_button = controlador.find_element_by_xpath ("//*[@id = ': 7k']")
Botón de enviar.hacer clic()

Ok, entonces, hacer un programa simple para iniciar sesión y enviar correos ahora es demasiado fácil? No tenemos que parar allí; Podemos crear todo tipo de bots.

Acciones del ratón

Lo siguiente que debe aprender es lidiar con las acciones del mouse, desde flotar hasta arrastrar y soltar archivos.

Primero debemos especificar las pestañas; En este caso, especificaré tres pestañas: la pestaña Inicio, la pestaña Electrónica y la pestaña del teléfono celular (el teléfono celular está anidado dentro de la electrónica). Ok, para este ejemplo, elegí eBay.California. En Ebay.CA, hay muchas pestañas: una para hogar y otra para electrónica. Por lo general, comenzamos en la pestaña Inicio. Aquí, supongamos que me gustaría navegar por la pestaña Electrónica y luego la pestaña Celular del teléfono y los accesorios y hacer clic en ella. Podríamos usar acciones del mouse para llevar a cabo lo siguiente.

Comenzamos importando lo necesario y abriendo eBay.California.

Desde Selenium Import WebDriver
de Selenium.Webdriver Importación ActionChains
de webdriver_manager.cromedrivermanager
tiempo de importación
controlador = webdriver.Chrome (Chromedrivermanager ().instalar())
conductor.Get ("https: // www.eBay.California/")

A continuación, necesitamos agregar los elementos que nos preocupa. En este caso, tengo las tres cajas rojas en la imagen anterior.

Inicio = conductor.find_element_by_xpath ("//*[@id = 'mainContent']/div [1]/ul/li [1]/span")
Electrónica = controlador.find_element_by_xpath ("//*[@id = 'mainContent']/div [1]/ul/li [5]/a")
cell_phone = controlador.find_element_by_xpath ("//*[@id = 'mainContent']/div [1]/ul/li [5]/div [2]/div [1]/nav [1]/ul/li [1]/a ")

Luego inicializamos el Actionchains y usa el Move_to_element () Método para mudarse de casa a electrónica y teléfonos celulares. Una vez en la pestaña Celular y accesorios, hacemos clic en ella. Para que todo esto funcione, debemos agregar el método Perform () al final, o no sucederá nada.

Acciones = ActionChains (controlador)
next_step = Acciones.Move_to_element (Inicio).Move_to_element (Electrónica)
próximo paso.Move_to_element (Cell_phone).hacer clic()
próximo paso.llevar a cabo()

Sin embargo, puede realizar varias acciones con el mouse, desde hacer clic derecho hasta arrastrar y soltar. Obtengamos un ejemplo en el que pueda hacer clic con el botón derecho. Para hacer clic derecho, necesita el método context_click (); pase dentro de él lo que desea hacer clic. En este caso, deseamos hacer clic primero en el botón, por lo que decimos que el conductor.context_click (botón): haga clic con el botón derecho. Luego, cuando el clic derecho nos muestra un menú de selección con las opciones, le pedimos que haga clic en una de las opciones que se muestran: haga clic (Copiar), que hará clic en la pestaña Copiar.

Desde Selenium Import WebDriver
de Selenium.Webdriver Importación ActionChains
de webdriver_manager.cromedrivermanager
controlador = webdriver.Chrome (Chromedrivermanager ().instalar())
conductor.Get ("https: // swisnl.github.IO/jQuery-ContextMenu/Demo/Menu-Title.html ")
botón = controlador.find_element_by_xpath ("/html/body/div/section/div/div/div/p/span [1]")
copia = controlador.find_element_by_xpath ("/html/body/ul [1]/li [3]")
Acciones = ActionChains (controlador)
comportamiento.context_click (botón).Haga clic (Copie)
comportamiento.llevar a cabo()

Puedes hacer tantas cosas con Selenium, pero también echaremos un vistazo a la arrastre y la caída. Hay dos formas de arrastrar y soltar un elemento en su destino objetivo. Uno está usando el método drag_and_drop (), y el otro está usando una técnica más complicada:

Desde Selenium Import WebDriver
de Selenium.Webdriver Importación ActionChains
de webdriver_manager.cromedrivermanager
tiempo de importación
controlador = webdriver.Chrome (Chromedrivermanager ().instalar())
conductor.Get ("http: // www.dhtmlgoodies.com/scripts/drag-drop-nodes/drag-drop-nodes-demo3.html ")
conductor.implícitamente_wait (1)
conductor.maximize_window ()
# Seleccione la imagen de origen en la página para arrastrar
fuente = controlador.find_element_by_id ("node2")
# Seleccione el objetivo donde lo desee
objetivo = controlador.find_element_by_xpath ("//*[@id = 'box1']")
tiempo.dormir (5)
# Inicializar las Cadras de Action
Action_chains = ActionChains (controlador)
# Mueva la fuente al objetivo
Action = Action_Chains.click_and_hold (fuente) \
.Move_to_element (Target) \
.liberación (objetivo) \
.Haga clic en (Target) \
.llevar a cabo()

Selenium es una herramienta muy poderosa para hacer muchas cosas. En este tutorial, cubrimos algunas de las cosas que Selenium puede hacer; Sin embargo, una vez que se familiariza con él, puede crear todo tipo de bots para automatizar el navegador.

Codificación feliz!