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

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM