zoukankan      html  css  js  c++  java
  • web自动化,下拉滚动到底部/顶部和下拉滚动到指定的元素

    在web自动化,经常会遇到页面显示内容太多的时候,页面就会出现滚动条,一般有两种方式进行下拉,一种是直接下拉到底部/顶部/中部,或者直接给定元素,直接下拉到指定元素的位置。

    两种方式的共同点:

    两种方式,都是通过selenium框架,执行js代码的方式来实现,只是传递的js代码不一样

    self.driver.execute_script(js)

    第一种:自定义直接下拉到顶部或底部,根据需要进行选择

    滚动到底部:window.scrollTo(0, document.body.scrollHeight);

    滚动到页面中间:window.scrollTo(0, document.body.scrollHeight/2);

    滚动到页面顶部:window.scrollTo(0, document.body.scrollHeight/document.body.scrollHeight);

        def scroll_to(self, type):
            '''
            移动浏览器的滚动条,滚动屏幕到百分比的位置
            目前分为移动到末尾、移动到中间、移动到顶部。以及每次移动1/5,这种只能使用于浏览器的滚动条不在body里面,若有修改过滚动条的属性,无法进行下滑
            :param type:
            :return:
            '''
            if type == 'end':
                # 移动到末尾
                js = "window.scrollTo(0, document.body.scrollHeight);"
            elif type == 'middle':
                # 移动到中间
                js = "window.scrollTo(0, document.body.scrollHeight/2);"
            elif type == 'top':
                # 移动到顶部
                js = "window.scrollTo(0, document.body.scrollHeight/document.body.scrollHeight);"
            else:
                # 暂时设置移动 1/5
                js = "window.scrollTo(0, document.body.scrollHeight/5);"
            try:
                self.driver.execute_script(js)
            except Exception as e:
                mylog.exception("scroll_to_移动屏幕到{0}失败,请检查{1}".format(type, e))
                self.save_imgs(model=type)
                raise
    

    这种下滑方式在滚动条在body里面的时候,进行下滑会没响应

    滚动条不在body里面,这个时候,执行下滑是正常的

     当滚动条在body里面的时候,下滑操作就没反应了,这个时候,可以指定元素的位置,进行下滑操作

    第二种:给定元素的位置,下滑到该元素的位置(建议使用!)

            try:
                self.driver.execute_script("arguments[0].scrollIntoView();", sroll_element)
            except Exception as e:
                mylog.exception("{0}_进行滚动屏幕_到{1}元素失败,请检查{2}".format(model, loc, e))
                self.save_imgs(model)
                raise
    

      

  • 相关阅读:
    MySQL数据库开发的36条原则
    su和sudo的区别与使用
    利用modelarts和物体检测方式识别验证码
    华为云大咖说-庄表伟:架构师的基本功——管理篇
    【玩转MLS系列】基础教程
    Java程序性能优化
    洛谷P4551 最长异或路径
    POJ 2001 Shortest Prefixes
    线段树区间修改
    接毒瘤
  • 原文地址:https://www.cnblogs.com/cuitang/p/14990205.html
Copyright © 2011-2022 走看看