def scroll_by_key_down(self, dat, distance_togo):
        """ 模拟 page_up/down 方式来滚动

        :param dat:
        :type dat:
        :param distance_togo:
        :type distance_togo:
        :return:
        :rtype:
        """
        try:
            target = self.get_elements(dat)
            distance_done = 0
            while distance_done < distance_togo:
                chance = random.random()
                if chance < 0.05:
                    rand_block(0.5, 0.1)
                    continue
                distance = rand_pareto_float(100, 10)
                if chance >= 0.95:
                    distance = -distance
                key_press_times_ = int(distance // PIXELS_PER_DOWN_KEY)
                self.mock_key_down(target, key_press_times_)
                distance_done += key_press_times_ * PIXELS_PER_DOWN_KEY
        except Exception as _:
            log.error(_)
            raise