웹 자동화: 8.3 셀레늄에서 브라우저 창 스크롤을 구현하는 방법

창 스크롤은 웹 페이지 작업이 아니라 창 동작입니다. 창 스크롤을 달성하려면 셀레늄에서 js 명령을 보내야 합니다(참조: 8.2 셀레늄에서 js 명령을 보내는 방법)
사용 시나리오:
1. 지연 로드된 제품이 있습니다. 모든 것이 한 번에 로드되지는 않지만 특정 작업 반드시 실행되어야 합니다. 새로운 항목이 나옵니다. (예: 새로운 항목을 로드하려면 스크롤 막대를 아래로 당깁니다
.) 2. 요소를 클릭하거나 조작하고 싶은데 이 요소가 페이지에 표시되지 않습니다. 클릭하기 전에 요소를 가시 범위로 끌어와야 합니다.

창 스크롤의 3가지 방법을 소개합니다.

방법 1: 좌표 방법

그러나 우리는 일반적으로 우리가 배치하는 요소의 픽셀 수를 모르기 때문에 이 방법을 거의 사용하지 않습니다.
window.scrollTo(0,1000) # f(x,y) x: 가로 좌표, y: 세로 좌표, 단위: xp(픽셀)

연습 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)  # 等待一段时间,方便查看滚动的效果

방법 2: 창 하단으로 스크롤한 다음 찾고 있는 요소를 찾습니다.

window.scrollTo(0,document.body.scrollHeight) # document.body.scrollHeight 현재 창의 높이

연습 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)')  # 再继续滚动

방법 3: 요소를 가시 범위로 스크롤


시나리오: 요소가 비교 아래에 있는 경우가 있습니다. 페이지를 아래로 스크롤하여 요소를 보고 document.getElementById(“id”).scrollIntoView()를 클릭하거나
두 줄로 작성 해야 합니다 .
el = document.getElementById(“id” )
el.scrollIntoView()

연습 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()')

참고: 연습 3에 구덩이가 있습니다.
GetElementsByClassName은 요소 집합을 찾습니다. 인덱스로 요소 "2"를 가져와야 합니다(0부터 시작).
여기에 이미지 설명 삽입

Guess you like

Origin blog.csdn.net/weixin_48415452/article/details/120272120