Instalación de Selenium

Antes de empezar a usar Selenium, necesitamos instalarlo. A continuación se muestran los pasos detallados para instalar Selenium.

Selenium es compatible con varios lenguajes de programación, pero esta serie de tutoriales usará Python como ejemplo.

Si aún no tienes Python instalado, puedes instalarlo siguiendo los siguientes pasos:

  1. Visitasitio web oficial de Python。
  2. Descarga el paquete de instalación de Python adecuado para tu sistema operativo.
  3. Ejecuta el instalador y asegúrate de marcar la opción "Add Python to PATH" durante la instalación.
  4. Una vez completada la instalación, abre la línea de comandos (en Windows, el Símbolo del sistema o PowerShell; en macOS y Linux, la Terminal) e introducepython --versionopython3 --versionpara comprobar si Python se instaló correctamente.

También puedes consultar el contenido de Python en:Tutorial de Python

Después de instalar Python, podemos usarpippara instalar Selenium.pipes la herramienta de gestión de paquetes de Python, utilizada para instalar y administrar librerías de Python.

Abre la línea de comandos e introduce el siguiente comando para instalar Selenium:

pip install selenium

Si estás usando Python3, es posible que necesites usarpip3:

pip3 install selenium

Una vez completada la instalación, puedes comprobar si Selenium se instaló correctamente con el siguiente comando:

pip show selenium

Si se muestra la información de la versión de Selenium, la instalación fue exitosa.

Descargar el controlador del navegador

Selenium necesita un controlador del navegador para controlar el navegador.

Cada navegador requiere un controlador diferente; a continuación se muestran las direcciones de descarga de los controladores de los navegadores más comunes:

Descarga el controlador adecuado para la versión de tu navegador y añade su ruta a las variables de entorno del sistema, o coloca el archivo del controlador en el directorio donde se encuentra el script de Python.


Usar Selenium

Una vez instalados Selenium y el controlador del navegador, podemos empezar a escribir scripts de automatización.

A continuación se muestra un ejemplo sencillo que muestra cómo usar Selenium para abrir una página web y obtener el título de la página.

1. Importar Selenium

Primero, necesitamos importar elwebdrivermódulo de Selenium:

from selenium import webdriver

2. Iniciar el navegador

A continuación, necesitamos iniciar una instancia del navegador. En esta serie usaremos Chrome como ejemplo.

driver = webdriver.Chrome(executable_path='path/to/chromedriver')

Selecciona el navegador e inicializa WebDriver:

Ejemplo

from selenium import webdriver

# Usar el navegador Chrome
driver = webdriver.Chrome(executable_path='/path/to/chromedriver')

# O usar el navegador Firefox
# driver = webdriver.Firefox(executable_path='/path/to/geckodriver')

# O usar el navegador Edge
# driver = webdriver.Edge(executable_path='/path/to/msedgedriver')

A partir de Selenium 4, la gestión del controlador del navegador ha cambiado: Selenium 4 intenta detectar automáticamente la versión del navegador instalada en el sistema y descarga el controlador correspondiente. Esto significa que los usuarios ya no necesitan descargar y configurar manualmente la ruta del controlador, a menos que necesiten una versión específica del controlador.

Ejemplo

from selenium import webdriver

driver = webdriver.Chrome()  # Si usas otro navegador, como Firefox, debes modificarlo en consecuencia

Debido al entorno de red en China, la descarga automática del controlador requiere un entorno de red diferente, por lo que se recomienda descargar el controlador manualmente y luego especificar la ruta del controlador.

En Selenium 4, ya no se establece directamente la ruta del controlador en webdriver.Chrome, sino que se configura mediante la introducción del objeto Service. Esto evita las advertencias de obsolescencia y garantiza la carga correcta del controlador. Por ejemplo:

Ejemplo

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService

service = ChromeService(executable_path="PATH_TO_DRIVER")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)

Si colocaschromedriveren la ruta del sistema, o lo colocas en el directorio donde se encuentra el script de Python, puedes omitir elexecutable_pathparámetro:

driver = webdriver.Chrome()

3. Abrir una página web

Usa elgetmétodo para abrir una página web:

driver.get('https://www.baidu.com')

4. Obtener el título de la página

Podemos usar latitlepropiedad para obtener el título de la página actual:

print(driver.title)

5. Cerrar el navegador

Después de completar las operaciones, recuerda cerrar el navegador:

driver.quit()

6. Ejemplo completo

Combina los pasos anteriores; el código completo es el siguiente:

Ejemplo

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService

# Establecer la ruta correcta del controlador
service = ChromeService(executable_path="/EJEMPLO/Downloads/chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)


# Abrir un sitio web
driver.get("https://www.baidu.com")

# Obtener el título de la página
print(driver.title)

# Cerrar el navegador
driver.quit()

Cuando el código anterior se ejecute correctamente, se abrirá el navegador y se abrirá la página web, como se muestra a continuación:

Después de abrir, se mostrará el título de la página web:

Busca en Baidu y lo sabrás.

Usar window.stop() para forzar la detención de la carga de la página

A veces una página web tarda demasiado en cargar, lo que puede provocar excepciones. Para poder extraer datos sin problemas, puedes dejar que la página cargue durante unos segundos y luego ejecutar el código JavaScript window.stop() para forzar la detención de la carga de la página.

Ejemplo

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService

# Establecer la ruta correcta del controlador
service = ChromeService(executable_path="/EJEMPLO/Downloads/chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)

# Abrir un sitio web
driver.get("https://www.baidu.com")

# Esperar a que la página termine de cargar
time.sleep(2)  # Puedes ajustar el tiempo de espera según sea necesario

# Forzar la detención de la carga de la página
driver.execute_script("window.stop();")
# Obtener el título de la página
print(driver.title)

# Cerrar el navegador
driver.quit()

Operaciones comunes

Además de abrir páginas web y obtener títulos, Selenium admite muchas otras operaciones. A continuación se muestran algunos ejemplos de operaciones comunes:

1. Buscar elementos

Puedes usar elfind_elementmétodo para buscar elementos en la página. Por ejemplo, buscar un campo de entrada y escribir texto:

Ejemplo

input_element = driver.find_element('name', 'q')
input_element.send_keys('Selenium')

2. Hacer clic en un botón

Puedes usar elclickmétodo para hacer clic en un botón:

Ejemplo

button_element = driver.find_element('name', 'btnK')
button_element.click()

3. Esperar a que la página cargue

A veces los elementos de la página no se cargan de inmediato; podemos usarWebDriverWaitpara esperar a que aparezca el elemento:

Ejemplo

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.NAME, 'q')))
Otras extensiones