DriverElement添加scroll_to()

This commit is contained in:
g1879 2022-01-10 15:30:18 +08:00
parent 01b8d2c0ec
commit 1a98dca066
2 changed files with 43 additions and 2 deletions

View File

@ -477,6 +477,45 @@ class DriverElement(DrissionElement):
"""
return self.inner_ele.parent.execute_script(script, self.inner_ele, *args)
def scroll_to(self, mode: str = 'bottom', pixel: int = 300) -> None:
"""按参数指示方式滚动元素 \n
:param mode: 可选滚动方向'top', 'bottom', 'half', 'rightmost', 'leftmost', 'up', 'down', 'left', 'right'
:param pixel: 滚动的像素
:return: None
"""
if mode == 'top':
self.run_script("arguments[0].scrollTo(arguments[0].scrollLeft,0);")
elif mode == 'bottom':
self.run_script("arguments[0].scrollTo(arguments[0].scrollLeft,arguments[0].scrollHeight);")
elif mode == 'half':
self.run_script("arguments[0].scrollTo(arguments[0].scrollLeft,arguments[0].scrollHeight/2);")
elif mode == 'rightmost':
self.run_script("arguments[0].scrollTo(arguments[0].scrollWidth,arguments[0].scrollTop);")
elif mode == 'leftmost':
self.run_script("arguments[0].scrollTo(0,arguments[0].scrollTop);")
elif mode == 'up':
pixel = pixel if pixel >= 0 else -pixel
self.run_script(f"arguments[0].scrollBy(0,{pixel});")
elif mode == 'down':
self.run_script(f"arguments[0].scrollBy(0,{pixel});")
elif mode == 'left':
pixel = pixel if pixel >= 0 else -pixel
self.run_script(f"arguments[0].scrollBy({pixel},0);")
elif mode == 'right':
self.run_script(f"arguments[0].scrollBy({pixel},0);")
else:
raise ValueError("mode参数只能是'top', 'bottom', 'half', 'rightmost', "
"'leftmost', 'up', 'down', 'left', 'right'")
def submit(self) -> Union[bool, None]:
"""提交表单"""
try:

View File

@ -429,13 +429,15 @@ class DriverPage(BasePage):
self.driver.execute_script("window.scrollTo(0,document.documentElement.scrollTop);")
elif mode == 'up':
self.driver.execute_script(f"window.scrollBy(0,-{pixel});")
pixel = pixel if pixel >= 0 else -pixel
self.driver.execute_script(f"window.scrollBy(0,{pixel});")
elif mode == 'down':
self.driver.execute_script(f"window.scrollBy(0,{pixel});")
elif mode == 'left':
self.driver.execute_script(f"window.scrollBy(-{pixel},0);")
pixel = pixel if pixel >= 0 else -pixel
self.driver.execute_script(f"window.scrollBy({pixel},0);")
elif mode == 'right':
self.driver.execute_script(f"window.scrollBy({pixel},0);")