mirror of
https://gitee.com/g1879/DrissionPage.git
synced 2024-12-01 19:47:35 +08:00
4.0.4.17Page对象set.auto_handle_alert增加all_tabs参数;修复ele.text速度问题;
This commit is contained in:
parent
b405b794b3
commit
d010ab35ef
@ -14,4 +14,4 @@ from ._configs.chromium_options import ChromiumOptions
|
||||
from ._configs.session_options import SessionOptions
|
||||
|
||||
__all__ = ['ChromiumPage', 'ChromiumOptions', 'SessionOptions', 'SessionPage', 'WebPage', '__version__']
|
||||
__version__ = '4.0.4.16'
|
||||
__version__ = '4.0.4.17'
|
||||
|
@ -131,7 +131,7 @@ class ChromiumElement(DrissionElement):
|
||||
@property
|
||||
def text(self):
|
||||
"""返回元素内所有文本,文本已格式化"""
|
||||
return get_ele_txt(make_session_ele(self))
|
||||
return get_ele_txt(make_session_ele(self.html))
|
||||
|
||||
@property
|
||||
def raw_text(self):
|
||||
|
@ -13,3 +13,4 @@ class Settings(object):
|
||||
raise_when_wait_failed = False
|
||||
singleton_tab_obj = True
|
||||
cdp_timeout = 30
|
||||
auto_handle_alert = None
|
||||
|
@ -278,16 +278,20 @@ def set_browser_cookies(page, cookies):
|
||||
cookie['value'] = ''
|
||||
elif not isinstance(cookie['value'], str):
|
||||
cookie['value'] = str(cookie['value'])
|
||||
if cookie['name'].startswith('__Secure-'):
|
||||
cookie['secure'] = True
|
||||
|
||||
if cookie['name'].startswith('__Host-'):
|
||||
cookie['path'] = '/'
|
||||
cookie['secure'] = True
|
||||
cookie['url'] = page.url
|
||||
if not page.url.startswith('http'):
|
||||
cookie['name'] = cookie['name'].replace('__Host-', '__Secure-', 1)
|
||||
else:
|
||||
cookie['url'] = page.url
|
||||
page.run_cdp_loaded('Network.setCookie', **cookie)
|
||||
continue # 不用设置域名,可退出
|
||||
|
||||
if cookie['name'].startswith('__Secure-'):
|
||||
cookie['secure'] = True
|
||||
|
||||
if cookie.get('domain', None):
|
||||
try:
|
||||
page.run_cdp_loaded('Network.setCookie', **cookie)
|
||||
|
@ -901,6 +901,8 @@ class ChromiumBase(BasePage):
|
||||
|
||||
if self._alert.auto is not None:
|
||||
self._handle_alert(self._alert.auto)
|
||||
elif Settings.auto_handle_alert is not None:
|
||||
self._handle_alert(Settings.auto_handle_alert)
|
||||
elif self._alert.handle_next is not None:
|
||||
self._handle_alert(self._alert.handle_next, self._alert.next_text)
|
||||
self._alert.handle_next = None
|
||||
|
@ -11,6 +11,7 @@ from time import sleep
|
||||
from requests.structures import CaseInsensitiveDict
|
||||
|
||||
from .cookies_setter import SessionCookiesSetter, CookiesSetter, WebPageCookiesSetter
|
||||
from .._functions.settings import Settings
|
||||
from .._functions.tools import show_or_hide_browser
|
||||
from .._functions.web import format_headers
|
||||
|
||||
@ -241,6 +242,18 @@ class ChromiumPageSetter(TabSetter):
|
||||
tab_or_id = tab_or_id.tab_id
|
||||
self._owner.browser.activate_tab(tab_or_id)
|
||||
|
||||
def auto_handle_alert(self, on_off=True, accept=True, all_tabs=False):
|
||||
"""设置是否启用自动处理弹窗
|
||||
:param on_off: bool表示开或关
|
||||
:param accept: bool表示确定还是取消
|
||||
:param all_tabs: 是否为全局设置
|
||||
:return: None
|
||||
"""
|
||||
if all_tabs:
|
||||
Settings.auto_handle_alert = on_off
|
||||
else:
|
||||
self._owner._alert.auto = accept if on_off else None
|
||||
|
||||
|
||||
class SessionPageSetter(BasePageSetter):
|
||||
def __init__(self, owner):
|
||||
|
@ -89,6 +89,8 @@ class ChromiumPageSetter(TabSetter):
|
||||
|
||||
def tab_to_front(self, tab_or_id: Union[str, ChromiumTab] = None) -> None: ...
|
||||
|
||||
def auto_handle_alert(self, on_off: bool = True, accept: bool = True, all_tabs: bool = False) -> None: ...
|
||||
|
||||
|
||||
class SessionPageSetter(BasePageSetter):
|
||||
_owner: SessionPage = ...
|
||||
|
28
README.md
28
README.md
@ -12,6 +12,8 @@ DrissionPage 是一个基于 python 的网页自动化工具。
|
||||
|
||||
---
|
||||
|
||||
官方网站:[https://drissionpage.cn](https://drissionpage.cn)
|
||||
|
||||
<a href='https://gitee.com/g1879/DrissionPage/stargazers'><img src='https://gitee.com/g1879/DrissionPage/badge/star.svg?theme=dark' alt='star'></img></a> <a href='https://gitee.com/g1879/DrissionPage/members'><img src='https://gitee.com/g1879/DrissionPage/badge/fork.svg?theme=dark' alt='fork'></img></a>
|
||||
|
||||
项目地址:[gitee](https://gitee.com/g1879/DrissionPage) | [github](https://github.com/g1879/DrissionPage)
|
||||
@ -36,18 +38,6 @@ python 版本:3.6 及以上
|
||||
|
||||
---
|
||||
|
||||
# 📕 背景
|
||||
|
||||
用 requests 做数据采集面对要登录的网站时,要分析数据包、JS 源码,构造复杂的请求,往往还要应付验证码、JS 混淆、签名参数等反爬手段,门槛较高,开发效率不高。
|
||||
使用浏览器,可以很大程度上绕过这些坑,但浏览器运行效率不高。
|
||||
|
||||
因此,这个库设计初衷,是将它们合而为一,同时实现“写得快”和“跑得快”。能够在不同需要时切换相应模式,并提供一种人性化的使用方法,提高开发和运行效率。
|
||||
除了合并两者,本库还以网页为单位封装了常用功能,提供非常简便的操作和语句,使用户可减少考虑细节,专注功能实现。 以简单的方式实现强大的功能,使代码更优雅。
|
||||
|
||||
以前的版本是对 selenium 进行重新封装实现的。从 3.0 开始,作者另起炉灶,对底层进行了重新开发,摆脱对 selenium 的依赖,增强了功能,提升了运行效率。
|
||||
|
||||
---
|
||||
|
||||
# 💡 理念
|
||||
|
||||
简洁而强大!
|
||||
@ -60,7 +50,7 @@ python 版本:3.6 及以上
|
||||
|
||||
## 🎇 强大的自研内核
|
||||
|
||||
本库采用全自研的内核,内置了 N 多实用功能,对常用功能作了整合和优化,对比 selenium,有以下优点:
|
||||
本库采用全自研的内核,内置无数实用功能,对常用功能作了整合和优化,对比 selenium,有以下优点:
|
||||
|
||||
- 无 webdriver 特征
|
||||
- 无需为不同版本的浏览器下载不同的驱动
|
||||
@ -87,18 +77,14 @@ python 版本:3.6 及以上
|
||||
- 高度集成的便利功能,从每个细节中体现
|
||||
- 还有很多细节,这里不一一列举,欢迎实际使用中体验:)
|
||||
|
||||
---
|
||||
|
||||
# 🔖 版本历史
|
||||
|
||||
[点击查看版本历史](https://g1879.gitee.io/drissionpagedocs/history/introduction/)
|
||||
|
||||
---
|
||||
|
||||
# 🖐🏻 免责声明
|
||||
|
||||
请勿将 DrissionPage 应用到任何可能会违反法律规定和道德约束的工作中,请友善使用 DrissionPage,遵守蜘蛛协议,不要将 DrissionPage 用于任何非法用途。如您选择使用 DrissionPage
|
||||
即代表您遵守此协议,作者不承担任何由于您违反此协议带来任何的法律风险和损失,一切后果由您承担。
|
||||
禁止将 DrissionPage 应用到任何可能会违反法律规定和道德约束的项目中。
|
||||
友善使用 DrissionPage,遵守蜘蛛协议,禁止将 DrissionPage 用于任何可能有损他人的项目中。
|
||||
如您选择使用 DrissionPage 即代表您遵守此协议,作者不承担任何由于您违反此协议带来任何的法律风险和损失。
|
||||
同时,作者不对 DrissionPage 可能存在的缺陷导致的损失承担任何责任,一切后果由您承担。
|
||||
|
||||
---
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user