Manejo de JavaScript, ActionChains y Keys en Python para Selenium: Eventos de Editor, Ratón y Teclado

  1. Eventos en Editores de Texto
from selenium import webdriver
import time as tiempo

(1) '''Editor de código online UEditor (localizando el área de texto)'''

navegador = webdriver.Chrome()
navegador.maximize_window()
navegador.get('https://www.bejson.com/ui/ueditor/')
navegador.switch_to.frame('ueditor_0')
tiempo.sleep(2)
navegador.find_element_by_xpath('/html/body/p').send_keys('hola')
tiempo.sleep(2)
navegador.quit()

(2) '''Editor de código online UEditor (localizando mediante JavaScript)'''

def editorRico(navegador, idFrame, contenido):
  '''
  :param navegador: instancia de WebDriver
  :param idFrame: ID del iframe
  :param contenido: texto a insertar
  :return:
  '''
  js="document.getElementById('{0}').contentWindow.document.body.innerHTML='{1}'".format(idFrame,contenido)
  navegador.execute_script(js)

navegador = webdriver.Chrome()
navegador.maximize_window()
navegador.get('https://www.bejson.com/ui/ueditor/')
#Método con JavaScript
editorRico(navegador=navegador, idFrame='ueditor_0', contenido='ejemplo')
tiempo.sleep(2)
navegador.quit() 

  1. Eventos del Ratón:

ActionChains es un método de interacción automatizada que permite simular acciones como moivmientos del ratón, operaciones de botones, plusaciones de teclas e interaccioens con menús contextuales.

Cuando se llaman a métodos de operación en un objeto ActionChains, las operaciones se almacenan en una cola. Al llamar a perform(), los eventos se disparan en el orden en que fueron encolados.

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
import time as tiempo

(1) '''Eventos del ratón (para menús desplegables)'''

navegador = webdriver.Chrome()
navegador.maximize_window()
navegador.get('https://www.baidu.com/')
#Hacer clic en configuración
#navegador.find_element_by_xpath('//*[@id="s-usersetting-top"]').click()
configuracion = navegador.find_element(By.XPATH,'//*[@id="s-usersetting-top"]')
#Crear instancia de ActionChains con el navegador
acciones = ActionChains(navegador=navegador)
#move_to_element() mueve el ratón a un elemento específico
acciones.move_to_element(configuracion).perform()
tiempo.sleep(5)
#Hacer clic en configuración de búsqueda
navegador.find_element(By.LINK_TEXT,'Configuración de búsqueda').click()
tiempo.sleep(3)
#Verificar si está seleccionada la opción de 10 resultados por página
pagina = navegador.find_element(By.NAME,'NR')
# is_selected() verifica si el elemento está seleccionado
# print(pagina.is_selected())
assert pagina.is_selected() == True
navegador.quit()

(2) '''Operaciones con botón derecho'''

navegador = webdriver.Chrome()
navegador.get('https://www.baidu.com/')
buscador = navegador.find_element_by_id('kw')
acciones = ActionChains(navegador)
acciones.context_click(buscador).perform() #Clic con botón derecho
tiempo.sleep(5)
navegador.quit()

'''Operaciones con botón derecho (Baidu Cloud)''' 

navegador = webdriver.Chrome()
navegador.maximize_window()
navegador.get('https://pan.baidu.com/')
tiempo.sleep(3)
#Ingresar usuario
navegador.find_element_by_name('userName').send_keys('ejemplo@correo.com')
tiempo.sleep(3)
#Ingresar contraseña
navegador.find_element_by_id('TANGRAM__PSP_4__password').send_keys('contraseña123')
tiempo.sleep(3)
#Hacer clic en iniciar sesión
navegador.find_element_by_xpath('//*[@id="TANGRAM__PSP_4__submit"]').click()
tiempo.sleep(3)
#Cerrar ventana emergente
navegador.find_element_by_xpath('/html/body/div[3]/div[1]').click()
tiempo.sleep(5)
#Seleccionar Mis Recursos
misRecursos = navegador.find_element_by_xpath('//*[@id="layoutMain"]/div[2]/div[3]/div/div/dd[4]/div[2]/div[1]/a')
acciones = ActionChains(navegador)
#Ejecutar clic derecho en la carpeta
# acciones.context_click(misRecursos).perform()
acciones.double_click(misRecursos).perform()
tiempo.sleep(3)
navegador.quit()

  1. Eventos del Teclado
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time as tiempo

(1) '''Operaciones con teclas (Copiar, Pegar, Borrar, Enter)'''

navegador = webdriver.Chrome()
navegador.get('https://www.baidu.com/')
#Buscador
buscador = navegador.find_element(By.ID,'kw')
#Escribir búsqueda
buscador.send_keys('python')
#Ctrl+a para seleccionar todo
buscador.send_keys(Keys.CONTROL,'a')
tiempo.sleep(3)
buscador.send_keys('programación')
#Ctrl+c para copiar
buscador.send_keys(Keys.CONTROL,'c')
tiempo.sleep(3)
#Borrar
#buscador.send_keys(Keys.BACKSPACE)
tiempo.sleep(6)
##Ctrl+v para pegar
buscador.send_keys(Keys.CONTROL,'v')
tiempo.sleep(3)
#Tecla Enter
buscador.send_keys(Keys.ENTER)
tiempo.sleep(3)
navegador.quit()

(2)'''Navegación vertical en el navegador'''

navegador = webdriver.Chrome()
navegador.maximize_window()
navegador.get('https://www.baidu.com/')
#Escribir en el buscador
navegador.find_element(By.ID,'kw').send_keys('Selenium WebDriver')
#Hacer clic en el botón de búsqueda
navegador.find_element(By.ID,'su').click()
tiempo.sleep(3)
#Desplazar hacia abajo en los resultados
#Mover scroll al final
#Para manipular scroll en elementos incrustados, primero hay que localizarlos
# js
abajo = 'document.documentElement.scrollTop=10000'   #document.documentElement accede a scrollTop
#Ejecutar script JavaScript
navegador.execute_script(abajo)
tiempo.sleep(5)
##Desplazar hacia arriba
arriba = 'document.documentElement.scrollTop=0'
#Ejecutar script hacia arriba
navegador.execute_script(arriba)
tiempo.sleep(5)
navegador.quit()

Etiquetas: Selenium Python webdriver automatización testing

Publicado el 7-11 04:03