@@ -2700,6 +2700,13 @@ def scroll_to_y(self, y):
27002700 self .loop .run_until_complete (self .page .evaluate (js_code ))
27012701 self .loop .run_until_complete (self .page .wait ())
27022702
2703+ def scroll_by_y (self , y ):
2704+ y = int (y )
2705+ js_code = "window.scrollBy(0, %s);" % y
2706+ with suppress (Exception ):
2707+ self .loop .run_until_complete (self .page .evaluate (js_code ))
2708+ self .loop .run_until_complete (self .page .wait ())
2709+
27032710 def scroll_to_top (self ):
27042711 js_code = "window.scrollTo(0, 0);"
27052712 with suppress (Exception ):
@@ -2713,11 +2720,21 @@ def scroll_to_bottom(self):
27132720 self .loop .run_until_complete (self .page .wait ())
27142721
27152722 def scroll_up (self , amount = 25 ):
2716- self .loop .run_until_complete (self .page .scroll_up (amount ))
2723+ """Scrolls up as a percentage of the page."""
2724+ try :
2725+ self .loop .run_until_complete (self .page .scroll_up (amount ))
2726+ except Exception :
2727+ amount = self .get_window_size ()["height" ] * amount / 100
2728+ self .execute_script ("window.scrollBy(0, -%s);" % amount )
27172729 self .loop .run_until_complete (self .page .wait ())
27182730
27192731 def scroll_down (self , amount = 25 ):
2720- self .loop .run_until_complete (self .page .scroll_down (amount ))
2732+ """Scrolls down as a percentage of the page."""
2733+ try :
2734+ self .loop .run_until_complete (self .page .scroll_down (amount ))
2735+ except Exception :
2736+ amount = self .get_window_size ()["height" ] * amount / 100
2737+ self .execute_script ("window.scrollBy(0, %s);" % amount )
27212738 self .loop .run_until_complete (self .page .wait ())
27222739
27232740 def save_page_source (self , name , folder = None ):
0 commit comments