Web自动化——滑动scrollIntoView和Window.scrollTo()

一. 什么是scrollIntoView
scrollIntoView是一个与页面(容器)滚动相关的API

二. 如何调用
element.scrollIntoView() 参数默认为true
参数为true:调用该函数,页面发送滚动,使element的顶部与视图(容器)顶部对齐

参数为false:使element的底部与视图(容器)底部对齐

三. 使用场景
在python+selenium做元素定位时,有的元素在页面的不可见区域,这时候需要scrollIntoView()将其拖动到可见区域。比如以下,腾讯课堂,进入【近30天最多人在学】代码如下:

import unittest
from time import sleep

from selenium import webdriver


class MyCase(unittest.TestCase):
    def setUp(self) -> None:
        print('start---')

    def tearDown(self) -> None:
        print('end----')

    def test1(self):
        driver = webdriver.Firefox()
        driver.get("https://ke.qq.com/")
        driver.maximize_window()
        target = driver.find_element_by_xpath('//html//body//section[3]//div//div[8]')
        driver.execute_script('arguments[0].scrollIntoView();', target)  # 将该模块与浏览器顶部对齐

        sleep(6)
        driver.execute_script('arguments[0].scrollIntoView(false);', target)  # 将该模块与浏览器底部对齐
        sleep(5)

        driver.quit()


if __name__ == '__main__':
    unittest.main()

(1) driver.execute_script(‘arguments[0].scrollIntoView();’, target) # 将该模块与浏览器顶部对齐,效果图如下:
在这里插入图片描述

(2)driver.execute_script(‘arguments[0].scrollIntoView(false);’, target) # 将该模块与浏览器底部对齐
在这里插入图片描述


JS的Window.scrollTo() 方法

一、定义和用法
scrollTo() 方法可把内容滚动到指定的坐标。

二、语法
scrollTo(xpos,ypos)
参数描述:
xpos 必需。要在窗口文档显示区左上角显示的文档的 x 坐标。
ypos 必需。要在窗口文档显示区左上角显示的文档的 y 坐标。

在这里插入图片描述

        # 滚动到页面最底部
        driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")

        # 然后滚动到页面最顶部
        sleep(10)
        driver.execute_script("window.scrollTo(document.body.scrollHeight,0)")

(1)
driver.execute_script(“window.scrollTo(0,document.body.scrollHeight)”) # 滚动到页面最底部。效果图如下:
在这里插入图片描述

(2) driver.execute_script(“window.scrollTo(document.body.scrollHeight,0)”) # 滚动到页面最顶部 。效果图如下:
在这里插入图片描述

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可能是因为你的代码没有正确地获取到窗口对象。你需要在调用 scrollTo() 函数之前使用 window 对象来获取当前窗口,例如:let win = window; 然后再调用 scrollTo() 函数,如:win.scrollTo(x,y); 这样应该就可以正常工作了。 ### 回答2: window.scrollTo(x,y)是用于将浏览器窗口滚动到指定位置的方法。但是有些情况下,它可能不会生效。 首先,可能是因为在调用该方法之前,页面还未完全加载完成。如果页面尚未加载完成,浏览器可能无法正确解析并执行该方法,导致它不起作用。解决办法是在确保页面加载完成后再调用该方法。 其次,scrollTo方法的x和y参数是指定窗口滚动的目标位置的水平和垂直坐标。如果提供的坐标超出了页面的实际范围,浏览器将无法滚动到指定位置。确保提供的坐标在页面的可滚动范围内。 此外,有些浏览器可能对scrollTo方法的兼容性支持存在差异。不同的浏览器可能对该方法的实现方式有所不同,因此在某些浏览器中可能会遇到兼容性问题。可以通过使用兼容性较好的方式来实现滚动操作,比如使用Element对象的scrollIntoView方法来滚动到指定元素的位置。 如果以上方法都无法解决问题,可能是由于其他因素导致的。可以进一步检查和调试代码,查看是否存在其他影响滚动行为的因素。 总之,当window.scrollTo(x,y)不起作用时,需要确保页面加载完成、提供正确的滚动坐标、处理兼容性问题,并排除其他可能的因素。 ### 回答3: window.scrollTo(x, y) 是用于将窗口滚动到指定位置的JavaScript方法。如果它不起作用,可能有以下几个原因: 1. 参数值错误:x和y的值应该是数字类型,表示要滚动到的位置的横向和纵向坐标。确保传入的参数值正确,否则滚动可能不会发生。 2. 兼容性问题:不同浏览器对于window.scrollTo()的实现可能有差异,因此它可能在某些浏览器中不起作用。可以尝试在不同浏览器中运行代码,或者使用更通用的滚动方法。 3. 滚动区域限制:某些元素可能具有固定的滚动区域,并且window.scrollTo()只能滚动整个窗口。如果需要滚动到指定元素内部的位置,可以尝试使用其他滚动方法或更改元素的滚动设置。 4. 其他代码冲突:window.scrollTo()可能与页面中其他JavaScript代码冲突,导致其不起作用。可以尝试在代码中排查其他可能引起冲突的部分。 如果上述解决方法都不起作用,可以考虑使用其他的滚动方法,例如使用jQuery的animate()方法或CSS的scroll-behavior属性来实现滚动效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值