一、说明及实现方案:
要根据目标元素的位置动态决定是向下滑动还是向上滑动,可以结合 window.pageYOffset
和目标元素的位置来实现逻辑判断。以下是实现代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
# 打开浏览器并访问页面
driver = webdriver.Chrome()
driver.get('https://example.com')
# 等待页面加载完成
time.sleep(2)
try:
# 找到目标元素
target_element = driver.find_element(By.XPATH, '//*[@class="item-info" and text()="100"]')
# 获取当前页面的垂直滚动位置
current_scroll_position = driver.execute_script("return window.pageYOffset;")
# 获取目标元素的垂直位置
target_element_position = driver.execute_script("return arguments[0].getBoundingClientRect().top + window.pageYOffset;", target_element)
# 根据目标元素的位置判断滑动方向
if target_element_position > current_scroll_position:
print("目标元素在下方,向下滑动")
elif target_element_position < current_scroll_position:
print("目标元素在上方,向上滑动")
# 滚动到目标元素
driver.execute_script("arguments[0].scrollIntoView({behavior: 'smooth', block: 'center'});", target_element)
print("目标元素已定位并滚动至视图中央")
except Exception as e:
print(f"发生错误: {e}")
finally:
# 关闭浏览器
time.sleep(2)
driver.quit()
二、实现细节:
动态滚动判断:
window.pageYOffset
:获取当前页面的垂直滚动位置。getBoundingClientRect().top + window.pageYOffset
:获取目标元素相对于页面顶部的绝对位置。
滑动方向:
- 如果
target_element_position > current_scroll_position
,目标元素在下方,向下滑动。 - 如果
target_element_position < current_scroll_position
,目标元素在上方,向上滑动。
- 如果
滚动操作:
- 使用
scrollIntoView
方法,让目标元素滚动到可视范围内。
- 使用