Automatización web: cómo implementar el desplazamiento de la ventana del navegador en 8.3 selenium

El desplazamiento de ventana no es una operación de página web, sino un comportamiento de ventana. Para lograr el desplazamiento de la ventana, debe enviar comandos js en selenium (consulte: 8.2 Cómo enviar comandos js en selenium)
Escenarios de uso:
1. Hay productos con carga diferida: no todas las cosas se cargan a la vez, pero una determinada acción debe ejecutarse Están saliendo cosas nuevas (como: bajar la barra de desplazamiento para cargar cosas nuevas)
2. Quiero hacer clic u operar un elemento, pero este elemento no se puede ver en la página. El elemento debe colocarse en el rango visible antes de poder hacer clic en él.

Introducir 3 métodos de desplazamiento de ventana:

Método 1: método de coordenadas

Pero rara vez usamos este método, porque generalmente no sabemos la cantidad de píxeles del elemento que estamos posicionando.
window.scrollTo(0,1000) # f(x,y) x: abscisa, y: ordenada, unidad: xp (píxel)

ejercicio 1

from selenium import webdriver
import time

driver = webdriver.Chrome()  # 初始化一个谷歌浏览器
driver.maximize_window()  # 浏览器窗口最大化
driver.get("https://readhub.cn/topics")   # 打开一个存在懒加载的网页

time.sleep(5)   # 等待一段时间,待页面加载出来再执行js代码

# 方法一:坐标法
driver.execute_script('window.scrollTo(0,1000)')   # 横坐标不变,纵坐标 滚动到1000像素点
time.sleep(2)   # 等待一段时间,方便查看滚动的效果
driver.execute_script('window.scrollTo(0,2000)')   # 再滚动一次
time.sleep(2)  # 等待一段时间,方便查看滚动的效果

Método 2: desplácese hasta la parte inferior de la ventana y luego ubique el elemento que está buscando

window.scrollTo(0,document.body.scrollHeight) # document.body.scrollHeight La altura de la ventana actual

ejercicio 2

from selenium import webdriver
import time

driver = webdriver.Chrome()  # 初始化一个谷歌浏览器
driver.maximize_window()  # 浏览器窗口最大化
driver.get("https://readhub.cn/topics")   # 打开一个存在懒加载的网页

time.sleep(5)   # 等待一段时间,待页面加载出来再执行js代码

# 方法二:滚动到窗口底部
# 拉到底部,但是有新的加载就会退回到三分之二的位置;加载出来后又跳到四分之一的位置
driver.execute_script('window.scrollTo(0,document.body.scrollHeight)')
time.sleep(2)   # 等待一段时间,方便查看滚动的效果
driver.execute_script('window.scrollTo(0,document.body.scrollHeight)')  # 再继续滚动

Método 3: desplazar el elemento al rango visible

Escenario: A veces, el elemento está debajo de la comparación, debe desplazarse hacia abajo en la página para ver el elemento y hacer clic en
document.getElementById(“id”).scrollIntoView()
o escribir en dos líneas:
el = document.getElementById(“id” )
el.desplazarse hacia la vista()

Ejercicio 3

from selenium import webdriver
import time

driver = webdriver.Chrome()  # 初始化一个谷歌浏览器
driver.maximize_window()  # 浏览器窗口最大化
driver.get("https://www.baidu.com/s?ie=UTF-8&wd=%E8%8A%B1%E9%9D%99%E9%80%B8")   # 打开百度搜索“花静逸”的结果页

time.sleep(5)   # 等待一段时间,待页面加载出来再执行js代码

# document.getElementsByClassName("pc")[1]   # js指令:百度搜索结果页,定位页面底部翻页的元素“2”
driver.execute_script('document.getElementsByClassName("pc")[1].scrollIntoView()')

# 或者分成两行写
driver.execute_script('el = document.getElementsByClassName("pc")[1]')
driver.execute_script('el.scrollIntoView()')

Nota: Hay un hoyo en el ejercicio 3.
GetElementsByClassName localiza un conjunto de elementos.Necesitamos obtener el elemento "2" por índice (comenzando desde 0)
inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_48415452/article/details/120272120
Recomendado
Clasificación