mirror of
https://gitee.com/g1879/DrissionPage.git
synced 2024-12-10 04:00:23 +08:00
2.5.0
This commit is contained in:
parent
adfe628019
commit
bf5e05324f
@ -578,45 +578,6 @@ 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
|
||||
"""
|
||||
from warnings import warn
|
||||
warn("此方法下个版本将停用,请用scroll属性代替。", DeprecationWarning, stacklevel=2)
|
||||
if mode == 'top':
|
||||
self.scroll.to_top()
|
||||
|
||||
elif mode == 'bottom':
|
||||
self.scroll.to_bottom()
|
||||
|
||||
elif mode == 'half':
|
||||
self.scroll.to_half()
|
||||
|
||||
elif mode == 'rightmost':
|
||||
self.scroll.to_rightmost()
|
||||
|
||||
elif mode == 'leftmost':
|
||||
self.scroll.to_leftmost()
|
||||
|
||||
elif mode == 'up':
|
||||
self.scroll.up(pixel)
|
||||
|
||||
elif mode == 'down':
|
||||
self.scroll.down(pixel)
|
||||
|
||||
elif mode == 'left':
|
||||
self.scroll.left(pixel)
|
||||
|
||||
elif mode == 'right':
|
||||
self.scroll.right(pixel)
|
||||
|
||||
else:
|
||||
raise ValueError("mode参数只能是'top', 'bottom', 'half', 'rightmost', "
|
||||
"'leftmost', 'up', 'down', 'left', 'right'。")
|
||||
|
||||
def submit(self) -> Union[bool, None]:
|
||||
"""提交表单"""
|
||||
try:
|
||||
|
@ -415,45 +415,6 @@ class DriverPage(BasePage):
|
||||
ele = self.ele(loc_or_ele)
|
||||
ele.run_script("arguments[0].scrollIntoView();")
|
||||
|
||||
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
|
||||
"""
|
||||
from warnings import warn
|
||||
warn("此方法下个版本将停用,请用scroll属性代替。", DeprecationWarning, stacklevel=2)
|
||||
if mode == 'top':
|
||||
self.scroll.to_top()
|
||||
|
||||
elif mode == 'bottom':
|
||||
self.scroll.to_bottom()
|
||||
|
||||
elif mode == 'half':
|
||||
self.scroll.to_half()
|
||||
|
||||
elif mode == 'rightmost':
|
||||
self.scroll.to_rightmost()
|
||||
|
||||
elif mode == 'leftmost':
|
||||
self.scroll.to_leftmost()
|
||||
|
||||
elif mode == 'up':
|
||||
self.scroll.up(pixel)
|
||||
|
||||
elif mode == 'down':
|
||||
self.scroll.down(pixel)
|
||||
|
||||
elif mode == 'left':
|
||||
self.scroll.left(pixel)
|
||||
|
||||
elif mode == 'right':
|
||||
self.scroll.right(pixel)
|
||||
|
||||
else:
|
||||
raise ValueError("mode参数只能是'top', 'bottom', 'half', 'rightmost', "
|
||||
"'leftmost', 'up', 'down', 'left', 'right'。")
|
||||
|
||||
def refresh(self) -> None:
|
||||
"""刷新当前页面"""
|
||||
self.driver.refresh()
|
||||
|
@ -20,7 +20,7 @@ selenium 缺乏对浏览器下载文件的有效管理,难以进行检测下
|
||||
# 单线程下载方式
|
||||
|
||||
`MixPage`对象的`download`属性是一个`DownloadKit`对象,为尽量与旧版兼容,该属性可直接调用。如`page.download(url, path)`
|
||||
使用这个方式时效果与旧版一致,会阻塞程序直到任务结束,因此更加建议用后文讲述的多线程方法。
|
||||
?> 使用这个方式时效果与旧版一致,下载一个文件时会阻塞程序,因此更加建议用后文讲述的多线程方法。
|
||||
|
||||
参数:
|
||||
|
||||
@ -62,12 +62,14 @@ url:https://www.baidu.com/img/flexible/logo/pc/result.png
|
||||
(True, 'C:\\download\\img.png')
|
||||
```
|
||||
|
||||
# 多线程下载方式
|
||||
# 多线程并发下载方式
|
||||
|
||||
你可以往`DownloadKit`对象添加个数不限的下载任务,它会自动调配线程去完成这些任务。
|
||||
当前默认为 10 个线程,以后的版本会增加修改线程数功能。
|
||||
默认为 10 个线程。
|
||||
|
||||
## `add()`方法
|
||||
## 添加任务
|
||||
|
||||
使用`add()`方法添加任务
|
||||
|
||||
参数:
|
||||
|
||||
@ -105,7 +107,7 @@ print(mission.rate, mission.info)
|
||||
90% '下载中'
|
||||
```
|
||||
|
||||
## `show()`方法
|
||||
## 实时查看所有线程进度
|
||||
|
||||
多线程方式不会实时显示下载进度,可用`show()`方法把下载进度打印出来。
|
||||
|
||||
@ -137,8 +139,7 @@ page.download.show()
|
||||
|
||||
## 等待任务结束
|
||||
|
||||
有时须要等待任务结束,以便获取结果,可用`wait()`方法。
|
||||
当传入任务时,等待该任务结束并返回结果,不传入参数时等待所有任务结束。
|
||||
有时须要等待任务结束,以便获取结果,可用`wait()`方法。 当传入任务时,等待该任务结束并返回结果。不传入参数时等待所有任务结束,与`show()`方法一致。
|
||||
|
||||
参数:
|
||||
|
||||
@ -166,3 +167,51 @@ url:https://www.baidu.com/img/PCfb_5bf082d29588c07f842ccde3f97243ea.png
|
||||
目标路径:D:\files
|
||||
100% 下载完成 D:\files\PCfb_5bf082d29588c07f842ccde3f97243ea_4.png
|
||||
```
|
||||
|
||||
## 获取某个任务结果
|
||||
|
||||
从`add()`方法返回的`Mission`对象,可查看该任务执行情况。
|
||||
|
||||
`Mission`对象属性:
|
||||
|
||||
- id:任务 id
|
||||
- file_name:要保存的文件名
|
||||
- path:要保存的路径
|
||||
- data:任务数据
|
||||
- state:任务状态,有`'waiting'`、`'running'`、`'done'`三种
|
||||
- rate:任务进度,以百分比显示
|
||||
- info:任务信息,成功会返回文件绝对路径,失败会显示原因
|
||||
- result:任务结果,`True`表示成功,`False`表示失败,`None`表示跳过
|
||||
|
||||
```python
|
||||
mission = page.download.add(url)
|
||||
print(mission.state)
|
||||
```
|
||||
|
||||
输出:
|
||||
|
||||
```python
|
||||
running
|
||||
```
|
||||
|
||||
## 下载设置
|
||||
|
||||
可使用以下属性进行配置:
|
||||
|
||||
```python
|
||||
# 设置线程数,只能在没有任务在运行的时候进行
|
||||
page.download.size = 20
|
||||
|
||||
# 设置保存路径,设置后每个任务会使用这个路径,也可添加任务时单独设置
|
||||
page.download.goal_path = r'D:\tmp'
|
||||
|
||||
# 设置重试次数,初始为3
|
||||
page.download.retry = 5
|
||||
|
||||
# 设置失败重试间隔,初始为5
|
||||
page.download.interval = 2
|
||||
|
||||
# 设置存在文件名冲突时的处理方式,可选 'skip', 'overwrite', 'rename'
|
||||
page.download.file_exists = 'skip'
|
||||
```
|
||||
|
||||
|
@ -2,4 +2,5 @@ selenium
|
||||
requests
|
||||
tldextract
|
||||
lxml
|
||||
cssselect
|
||||
cssselect
|
||||
DownloadKit
|
5
setup.py
5
setup.py
@ -6,7 +6,7 @@ with open("README.md", "r", encoding='utf-8') as fh:
|
||||
|
||||
setup(
|
||||
name="DrissionPage",
|
||||
version="2.4.3",
|
||||
version="2.5.0",
|
||||
author="g1879",
|
||||
author_email="g1879@qq.com",
|
||||
description="A module that integrates selenium and requests session, encapsulates common page operations.",
|
||||
@ -21,7 +21,8 @@ setup(
|
||||
"selenium",
|
||||
"lxml",
|
||||
"tldextract",
|
||||
"requests"
|
||||
"requests",
|
||||
"DownloadKit"
|
||||
],
|
||||
classifiers=[
|
||||
"Programming Language :: Python :: 3.6",
|
||||
|
Loading…
x
Reference in New Issue
Block a user