From 558475408c6d640a34a10b487690b2b71b2e3644 Mon Sep 17 00:00:00 2001 From: flying-dp Date: Tue, 21 Dec 2021 21:36:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E4=BD=BF=E7=94=A8=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/使用方法/DriverElement类功能使用.md | 453 ++++++++++++++++++++++ docs/使用方法/DriverOptions类功能使用.md | 142 +++++++ docs/使用方法/MixPage 对象.md | 115 ++++-- docs/使用方法/OptionsManager类功能使用.md | 68 ++++ docs/使用方法/Select类功能使用.md | 78 ++++ docs/使用方法/SessionElement类功能使用.md | 196 ++++++++++ docs/使用方法/SessionOptions类功能使用.md | 129 ++++++ docs/使用方法/easy_set 方法.md | 20 + 8 files changed, 1178 insertions(+), 23 deletions(-) create mode 100644 docs/使用方法/DriverElement类功能使用.md create mode 100644 docs/使用方法/DriverOptions类功能使用.md create mode 100644 docs/使用方法/OptionsManager类功能使用.md create mode 100644 docs/使用方法/Select类功能使用.md create mode 100644 docs/使用方法/SessionElement类功能使用.md create mode 100644 docs/使用方法/SessionOptions类功能使用.md diff --git a/docs/使用方法/DriverElement类功能使用.md b/docs/使用方法/DriverElement类功能使用.md new file mode 100644 index 0000000..e1cf7d6 --- /dev/null +++ b/docs/使用方法/DriverElement类功能使用.md @@ -0,0 +1,453 @@ +## class DriverElement() + +driver 模式的元素对象,包装了一个 WebElement 对象,并封装了常用功能。 + +参数说明: + +- ele: WebElement - WebElement 对象 +- page: DriverPage - 元素所在的页面对象 + +## inner_ele + +被包装的 WebElement 对象。 + +返回: WebElement + +## html + +返回元素 outerHTML 文本。 + +返回: str + +## json + +当返回内容是json格式时,返回对应的字典。 + +返回: dict + +## inner_html + +返回元素 innerHTML 文本。 + +返回: str + +## tag + +返回元素标签名。 + +返回: str + +## attrs + +以字典方式返回元素所有属性及值。 + +返回: dict + +## text + +返回元素内的文本,已格式化处理。 + +返回: str + +## raw_text + +返回元素内的文本,未格式化处理。 + +返回: str + +## comments + +返回元素内注释列表。 + +返回: list + +## link + +返回元素 href 或 src 绝对 url。 + +返回: str + +## css_path + +返回元素 css selector 绝对路径。 + +返回: str + +## xpath + +返回元素 xpath 绝对路径。 + +返回: str + +## parent + +返回父级元素对象。 + +返回: DriverElement + +## next + +返回下一个兄弟元素对象。 + +返回: DriverElement + +## prev + +返回上一个兄弟元素对象。 + +返回: DriverElement + +## size + +以字典方式返回元素大小。 + +返回: dict + +## location + +以字典方式放回元素坐标。 + +返回: dict + +## shadow_root + +返回当前元素的 shadow_root 元素对象 + +返回: ShadowRoot + +## before + +返回当前元素的 ::before 伪元素内容 + +返回: str + +## after + +返回当前元素的 ::after 伪元素内容 + +返回: str + +## select + +如果是 select 元素,返回 Select 对象,否则返回 None。 + +返回:Union[Select, None] + +## wait__ele + +等待子元素从dom删除、显示、隐藏。 + +参数说明: + +- loc_or_ele:Union[str, tuple, DrissionElement, WebElement] - 可以是元素、查询字符串、loc元组 + +- mode:str - 等待方式,可选:'del', 'display', 'hidden' + +- timeout:float - 等待超时时间 + +返回: 等待是否成功 + +## texts() + +返回元素内所有直接子节点的文本,包括元素和文本节点 + +参数说明: + +- text_node_only:bool - 是否只返回文本节点 + +返回: List[str] + +## parents() + +返回第 N 层父级元素对象。 + +参数说明: + +- num: int - 第几层父元素 + +返回: DriverElement + +## nexts() + +返回后面第 num 个兄弟元素或节点文本。 + +参数说明: + +- num: int - 后面第几个兄弟元素或节点 +- mode: str - 'ele', 'node' 或 'text',匹配元素、节点、或文本节点 + +返回: [DriverElement, str] + +## prevs() + +返回前面第 num 个兄弟元素或节点文本。 + +参数说明: + +- num: int - 前面第几个兄弟元素或节点 +- mode: str - 'ele', 'node' 或 'text',匹配元素、节点、或文本节点 + +返回: [DriverElement, str] + +## attr() + +获取元素某个属性的值。 + +参数说明: + +- attr: str - 属性名称 + +返回: str + +## prop() + +获取元素某个property属性的值。 + +参数说明: + +- prop: str - 属性名称 + +返回: str + +## ele() + +返回当前元素下级符合条件的子元素、属性或节点文本。 +如查询参数是字符串,可选 '@属性名:'、'tag:'、'text:'、'css:'、'xpath:'、'.'、'#' 方式。无控制方式时默认用 text 方式查找。 +如是loc,直接按照内容查询。 + +参数说明: + +- loc_or_str: [Tuple[str, str], str] - 元素的定位信息,可以是 loc 元组,或查询字符串 +- mode: str - 'single' 或 'all',对应查找一个或全部 +- timeout: float - 查找元素超时时间 + +返回: [DriverElement, str] + +## eles() + +根据查询参数获取符合条件的元素列表。查询参数使用方法和 ele 方法一致。 + +参数说明: + +- loc_or_str: [Tuple[str, str], str] - 查询条件参数 +- timeout: float - 查找元素超时时间 + +返回: List[DriverElement or str] + +## s_ele() + +查找第一个符合条件的元素以SessionElement形式返回。 + +参数说明: + +- loc_or_str: [Tuple[str, str], str] - 元素的定位信息,可以是 loc 元组,或查询字符串 + +返回: [SessionElement, str] + +## s_eles() + +查找所有符合条件的元素以SessionElement列表形式返回。 + +参数说明: + +- loc_or_str: [Tuple[str, str], str] - 查询条件参数 + +返回: List[SessionElement or str] + +## style() + +返回元素样式属性值。 + +参数说明: + +- style: str - 样式属性名称 +- pseudo_ele: str - 伪元素名称 + +返回: str + +## click() + +点击元素,如不成功则用 js 方式点击,可指定是否用 js 方式点击。 + +参数说明: + +- by_js: bool - 是否用js方式点击 + +返回: bool + +## click_at() + +带偏移量点击本元素,相对于左上角坐标。不传入x或y值时点击元素中点。 + +参数说明: + +- x: Union[int, str] - 相对元素左上角坐标的x轴偏移量 +- y: Union[int, str] - 相对元素左上角坐标的y轴偏移量 +- by_js: bool - 是否用js方式点击 + +返回: None + +## r_click() + +右键单击。 + +返回: None + +## r_click_at() + +带偏移量右键单击本元素,相对于左上角坐标。不传入x或y值时点击元素中点。 + +参数说明: + +- x: Union[int, str] - 相对元素左上角坐标的x轴偏移量 +- y: Union[int, str] - 相对元素左上角坐标的y轴偏移量 + +返回: None + +## input() + +输入文本或组合键,返回是否成功输入。insure_input 为 False 时始终返回 True。 + +参数说明: + +- vals: Union[str, tuple] - 文本值或按键组合 +- clear: bool - 输入前是否清除文本框 +- insure_input: bool - 是否自动检测并确保输入正确 +- timeout: folat - 尝试输入的超时时间,不指定则使用父页面的超时时间,只在insure_input为True时生效 + +返回: bool,是否成功输入。insure_input 为 False 时始终返回 True。 + +## run_script() + +执行 js 代码,传入自己为第一个参数。 + +参数说明: + +- script: str - JavaScript文本 +- *args - 传入的参数 + +返回: Any + +## submit() + +提交表单。 + +返回: None + +## clear() + +清空文本框。 + +参数说明: + +- insure_clear: bool - 是否确保清空 + +返回: bool - 是否清空成功,不能清空的元素返回None + +## is_selected() + +元素是否被选中。 + +返回: bool + +## is_enabled() + +元素在页面中是否可用。 + +返回: bool + +## is_displayed() + +元素是否可见。 + +返回: bool + +## is_valid() + +元素是否还在 DOM 内。该方法用于判断页面跳转元素不能用的情况 + +返回: bool + +## screenshot() + +网页截图,返回截图文件路径。 + +参数说明: + +- path: str - 截图保存路径,默认为 ini 文件中指定的临时文件夹 +- filename: str - 截图文件名,默认为页面 title 为文件名 + +返回: str + +## select() + +在下拉列表中选择。 + +参数说明: + +- text: str - 选项文本 + +返回: bool - 是否成功 + +## set_prop() + +设置元素property属性。 + +参数说明: + +- prop: str - 属性名 +- value: str - 属性值 + +返回: bool -是否成功 + +## set_attr() + +设置元素attribute参数。 + +参数说明: + +- attr: str - 参数名 +- value: str - 参数值 + +返回: bool -是否成功 + +## remove_attr() + +删除元素属性。 + +参数说明: + +- attr: str - 参数名 + +返回: bool -是否成功 + +## drag() + +拖拽当前元素一段距离,返回是否拖拽成功。 + +参数说明: + +- x: int - 拖拽x方向距离 +- y: int - 拖拽y方向距离 +- speed: int - 拖拽速度 +- shake: bool - 是否随机抖动 + +返回: bool + +## drag_to() + +拖拽当前元素,目标为另一个元素或坐标元组,返回是否拖拽成功。 + +参数说明: + +- ele_or_loc[tuple, WebElement, DrissionElement] - 另一个元素或相对当前位置,坐标为元素中点坐标。 +- speed: int - 拖拽速度 +- shake: bool - 是否随机抖动 + +返回: bool + +## hover() + +在元素上悬停鼠标。 + +返回: None \ No newline at end of file diff --git a/docs/使用方法/DriverOptions类功能使用.md b/docs/使用方法/DriverOptions类功能使用.md new file mode 100644 index 0000000..cef227b --- /dev/null +++ b/docs/使用方法/DriverOptions类功能使用.md @@ -0,0 +1,142 @@ +### class DriverOptions() + +chrome 浏览器配置类,继承自 selenium.webdriver.chrome.options 的 Options 类,增加了删除配置和保存到文件方法。 + +参数说明: + +- read_file: bool - 创建时是否从 ini 文件读取配置信息 +- ini_path: str - ini 文件路径,为None则读取默认 ini 文件 + +### driver_path + +chromedriver.exe 的路径。 + +返回: str + +### chrome_path + +chrome.exe 的路径 + +返回: str + +### save() + +保存设置到文件,返回自己,用于链式操作。 + +参数说明: + +- path: str - ini 文件的路径,传入 'default' 保存到默认ini文件 + +返回: DriverOptions - 返回自己 + +### remove_argument() + +移除一个设置。 + +参数说明: + +- value: str - 要移除的属性值 + +返回: DriverOptions - 返回自己 + +### remove_experimental_option() + +移除一个实验设置,传入 key 值删除。 + +参数说明: + +- key: str - 要移除的实验设置 key 值 + +返回: DriverOptions - 返回自己 + +### remove_all_extensions() + +移除所有插件,因插件是以整个文件储存,难以移除其中一个,故如须设置则全部移除再重设。 + +返回: DriverOptions - 返回自己 + +### set_argument() + +设置 chrome 属性,无值的属性可设置开关,有值的属性可设置属性的值。 + +参数说明: + +- arg: str - 属性名 +- value[bool, str] - 属性值,有值的属性传入值,没有的传入 bool + +返回: DriverOptions - 返回自己 + +### set_headless() + +打开或关闭无界面模式。 + +参数说明: + +on_off: bool - 打开或关闭 + +返回: DriverOptions - 返回自己 + +### set_no_imgs() + +是否加载图片。 + +参数说明: + +on_off: bool - 打开或关闭 + +返回: DriverOptions - 返回自己 + +### set_no_js() + +是否禁用 js。 + +参数说明: + +on_off: bool - 打开或关闭 + +返回: DriverOptions - 返回自己 + +### set_mute() + +是否静音。 + +参数说明: + +on_off: bool - 打开或关闭 + +返回: DriverOptions - 返回自己 + +### set_user_agent() + +设置浏览器 user agent。 + +参数说明: + +- user_agent: str - user agent 字符串 + +返回: DriverOptions - 返回自己 + +### set_proxy() + +设置代理。 + +参数说明: + +- proxy: str - 代理地址 + +返回: DriverOptions - 返回自己 + +### set_paths() + +设置浏览器相关的路径。 + +参数说明: + +- driver_path: str - chromedriver.exe 的路径 +- chrome_path: str - chrome.exe 的路径 +- debugger_address: str - 调试浏览器地址,例:127.0.0.1:9222 +- download_path: str - 下载文件路径 +- user_data_path: str - 用户数据路径 +- cache_path: str - 缓存路径 + +返回: DriverOptions - 返回自己 \ No newline at end of file diff --git a/docs/使用方法/MixPage 对象.md b/docs/使用方法/MixPage 对象.md index 1a577a8..c899af5 100644 --- a/docs/使用方法/MixPage 对象.md +++ b/docs/使用方法/MixPage 对象.md @@ -6,6 +6,12 @@ Tips: 多对象协同工作时,可将一个 MixPage 中的 Drission 对象传 ## 创建对象 创建对象方式有3种:简易、传入 Drission 对象、传入配置。可根据实际需要选择。 +参数说明: + drission: Drission对象,如没传入则创建一个。 + mode: 'd' 或 's' 即driver模式和session模式,默认是d模式 + timeout: 超时时间。d模式时为寻找元素时间,s模式时为连接时间 + driver_options: 浏览器设置,没有传入drission参数时会用这个设置新建Drission对象 + session_options: requests设置,没有传入drission参数时会用这个设置新建Drission对象 ```python # 简易创建方式,以 ini 文件默认配置自动创建 Drission 对象 @@ -25,22 +31,23 @@ page = MixPage(driver_options=do, session_options=so) # 默认 d 模式 ```python # 默认方式 page.get(url) -page.post(url, data, **kwargs) # 只有 session 模式才有 post 方法 - # 指定重试次数和间隔 -page.get(url, retry=5, interval=0.5) +page.get(url, retry=5, interval=0.5) #若连接出错,程序会自动重试若干次,可指定重试次数和等待间隔 + +page.post(url, data, **kwargs) # 只有 session 模式才有 post 方法 ``` -Tips:若连接出错,程序会自动重试若干次,可指定重试次数和等待间隔。 - ## 切换模式 - 在 s 和 d 模式之间切换,切换时会自动同步 cookies 和正在访问的 url。 ```python -page.change_mode(go=False) # go 为 False 表示不跳转 url +page.change_mode(mode,go) +切换模式,'d' 或 's'。切换时会把当前模式的 cookies 复制到目标模式。 +参数说明: + mode: str - 指定目标模式,'d' 或 's'。 + go: bool - 切换模式后是否跳转到当前 url +返回: None ``` - Tips:使用某种模式独有的方法时会自动跳转到该模式。 ## 页面属性 @@ -65,7 +72,7 @@ page.current_tab_handle # 返回当前标签页 handle ## 页面操作 -调用只属于 d 模式的方法,会自动切换到 d 模式。详细用法见 APIs。 +调用只属于 d 模式的方法,会自动切换到 d 模式。 ```python page.set_cookies() # 设置cookies @@ -74,32 +81,94 @@ page.change_mode() # 切换模式,会自动复制 cookies page.cookies_to_session() # 从 WebDriver 对象复制 cookies 到 Session 对象 page.cookies_to_driver() # 从 Session 对象复制 cookies 到 WebDriver 对象 page.get(url, retry, interval, **kwargs) # 用 get 方式访问网页,可指定重试次数及间隔时间 -page.ele(loc_or_ele, timeout) # 获取符合条件的第一个元素、节点或属性 -page.eles(loc_or_ele, timeout) # 获取所有符合条件的元素、节点或属性 -page.download(url, save_path, rename, file_exists, **kwargs) # 下载文件 +page.ele(loc_or_ele, timeout) # 返回页面中符合条件的元素,默认返回第一个。​如查询参数是字符串,可选 '@属性名:'、'tag:'、'text:'、'css:'、'xpath:'、'.'、'#' 方式。无控制方式时默认用 text 方式查找。​如是loc,直接按照内容查询。 + 参数说明: + loc_or_ele: [Tuple[str, str], str, DriverElement, SessionElement, WebElement] - 元素的定位信息,可以是元素对象,loc 元组,或查询字符串 + timeout: float - 查找元素超时时间,driver 模式下有效 + 返回: [DriverElement, SessionElement, str] - 元素对象或属性、文本节点文本 +page.eles(loc_or_ele, timeout) # 获取所有符合条件的元素、节点或属性 +page.download(url, save_path, rename, file_exists, **kwargs) # 下载一个文件,返回是否成功和下载信息字符串。改方法会自动避免和目标路径现有文件重名。 + 参数说明: + url: str - 文件 url + save_path: str - 存放路径,默认为 ini 文件中指定的临时文件夹 + rename: str - 重命名文件,不改变扩展名 + file_exists: str - 若存在同名文件,可选择 'rename', 'overwrite', 'skip' 方式处理 + **kwargs - 用于 requests 的连接参数 + 返回: Tuple[bool, str] - 下载是否成功(bool)和状态信息(成功时信息为文件路径)的元组 + +以下方法和属性只有 driver 模式下生效,调用时会自动切换到 driver 模式 page.close_driver() # 关闭 WebDriver 对象 page.close_session() # 关闭 Session 对象 # s 模式独有: -page.post(url, data, retry, interval, **kwargs) # 以 post 方式访问网页,可指定重试次数及间隔时间 - +page.post(url, data, retry, interval, **kwargs) ##以 post 方式跳转,调用时自动切换到 session 模式。 + 参数说明: + url: str - 目标 url + data: dict - 提交的数据 + go_anyway: bool - 是否强制跳转。若目标 url 和当前 url 一致,默认不跳转。 + show_errmsg: bool - 是否显示和抛出异常 + retry: int - 连接出错时重试次数 + interval: float - 重试间隔(秒) + **kwargs - 用于 requests 的连接参数 + 返回: [bool, None] - url 是否可用 # d 模式独有: page.wait_ele(loc_or_ele, mode, timeout) # 等待元素从 dom 删除、显示、隐藏 -page.run_script(js, *args) # 运行 js 语句 -page.create_tab(url) # 新建并定位到一个标签页,该标签页在最后面 + 参数说明: + loc_or_ele: [str, tuple, DriverElement, WebElement] - 元素查找方式,与ele()相同 + mode: str - 等待方式,可选:'del', 'display', 'hidden' + timeout: float - 等待超时时间 + 返回: bool - 等待是否成功 +page.run_script(js, *args) 执行JavaScript代码。 + 参数说明: + script: str - JavaScript 代码文本 + *args - 传入的参数 + 返回: Any +page.create_tab(url) # 新建并定位到一个标签页,该标签页在最后面。 + 参数说明: + url: str - 新标签页跳转到的网址 + 返回: None page.to_tab(num_or_handle) # 跳转到标签页 + 参数说明: + num_or_handle:[int, str] - 标签页序号或handle字符串,序号第一个为0,最后为-1 + 返回: None page.close_current_tab() # 关闭当前标签页 -page.close_other_tabs(num_or_handles) # 关闭其它标签页 -page.to_iframe(iframe) # 切入 iframe -page.screenshot(path) # 页面截图 -page.scroll_to_see(element) # 滚动直到某元素可见 +page.close_other_tabs(num_or_handles) # 关闭传入的标签页以外标签页,默认保留当前页。可传入列表或元组。 +page.to_iframe(loc_or_ele) # 跳转到 iframe,默认跳转到最高层级,兼容 selenium 原生参数。 + 参数说明: + loc_or_ele: [int, str, tuple, WebElement, DriverElement] - 查找 iframe 元素的条件,可接收 iframe 序号(0开始)、id 或 + name、查询字符串、loc参数、WebElement对象、DriverElement 对象,传入 'main' 跳到最高层,传入 'parent' 跳到上一层 + 示例: + to_iframe('tag:iframe') - 通过传入 iframe 的查询字符串定位 + to_iframe('iframe_id') - 通过 iframe 的 id 属性定位 + to_iframe('iframe_name') - 通过 iframe 的 name 属性定位 + to_iframe(iframe_element) - 通过传入元素对象定位 + to_iframe(0) - 通过 iframe 的序号定位 + to_iframe('main') - 跳到最高层 + to_iframe('parent') - 跳到上一层 + 返回: None +page.screenshot(path,filename) # 网页截图,返回截图文件路径。 + 参数说明: + path: str - 截图保存路径,默认为 ini 文件中指定的临时文件夹 + filename: str - 截图文件名,默认为页面 title 为文件名 + 返回: str +page.scroll_to_see(loc_or_ele) # 滚动直到某元素可见 + 参数说明: + loc_or_ele: [str, tuple, WebElement, DriverElement] - 查找元素的条件,和 ele() 方法的查找条件一致。 + 返回: None page.scroll_to(mode, pixel) # 按参数指示方式滚动页面,可选滚动方向:'top', 'bottom', 'rightmost', 'leftmost', 'up', 'down', 'left', 'right', 'half' page.refresh() # 刷新当前页面 page.back() # 浏览器后退 -page.et_window_size(x, y) # 设置浏览器窗口大小,默认最大化 +page.set_window_size(x, y) # 设置浏览器窗口大小,默认最大化 page.check_page() # 检测页面是否符合预期 -page.chrome_downloading() # 获取 chrome 正在下载的文件列表 -page.process_alert(mode, text) # 处理提示框 +page.chrome_downloading(download_path) # 获取 chrome 正在下载的文件列表 + 参数说明: + download_path: str - 下载文件夹路径 + 返回:list +page.process_alert(mode, text) # 处理提示框。 + 参数说明: + mode: str - 'ok' 或 'cancel',若输入其它值,不会按按钮但依然返回文本值 + text: str - 处理 prompt 提示框时可输入文本 + 返回: [str, None] - 提示框内容文本 ``` ## cookies 的使用 diff --git a/docs/使用方法/OptionsManager类功能使用.md b/docs/使用方法/OptionsManager类功能使用.md new file mode 100644 index 0000000..d0f021a --- /dev/null +++ b/docs/使用方法/OptionsManager类功能使用.md @@ -0,0 +1,68 @@ +### class OptionsManager() + +管理配置文件内容的类。 + +参数说明: + +- path: str - ini文件路径,不传入则默认读取当前文件夹下的 configs.ini 文件 + +### paths + +返回 paths 设置信息。 + +返回: dict + +### chrome_options + +返回 chrome 设置信息。 + +返回: dict + +### session_options + +返回 session 设置信息。 + +返回: dict + +### get_value() + +获取配置的值。 + +参数说明: + +- section: str - 段落名称 +- item: str - 配置项名称 + +返回: Any + +### get_option() + +以字典的格式返回整个段落的配置信息。 + +参数说明: + +- section: str - 段落名称 + +返回: dict + +### set_item() + +设置配置值,返回自己,用于链式操作。 + +参数说明: + +- section: str - 段落名称 +- item: str - 配置项名称 +- value: Any - 值内容 + +返回: OptionsManager - 返回自己 + +### save() + +保存设置到文件,返回自己,用于链式操作。 + +参数说明: + +- path: str - ini 文件的路径,传入 'default' 保存到默认ini文件 + +返回: OptionsManager - 返回自己 \ No newline at end of file diff --git a/docs/使用方法/Select类功能使用.md b/docs/使用方法/Select类功能使用.md new file mode 100644 index 0000000..01e30fc --- /dev/null +++ b/docs/使用方法/Select类功能使用.md @@ -0,0 +1,78 @@ +## class Select() + +Select 类专门用于处理 d 模式下 select 标签。 + +参数说明: + +- ele: select 元素对象 + +## is_multi + +返回:是否多选列表 + +## options + +返回:所有被选中的option元素列表 + +## selected_option + +返回:第一个被选中的option元素 + +## selected_options + +返回:所有被选中的option元素列表 + +## clear() + +清除所有已选项。 + +## select() + +选定或取消选定下拉列表中子元素。 + +参数说明: + +- text_value_index:根据文本、值选或序号择选项,若允许多选,传入list或tuple可多选 +- para_type:参数类型,可选 'text'、'value'、'index' +- deselect:是否取消选择 + +返回:是否选择成功 + +## select_multi() + +选定或取消选定下拉列表中多个子元素。 + +参数说明: + +- text_value_index:根据文本、值选或序号择选多项 +- para_type:参数类型,可选 'text'、'value'、'index' +- deselect:是否取消选择 + +返回:是否选择成功 + +## deselect() + +选定或取消选定下拉列表中子元素。 + +参数说明: + +- text_value_index:根据文本、值选或序号取消择选项,若允许多选,传入list或tuple可多选 +- para_type:参数类型,可选 'text'、'value'、'index' + +返回:是否选择成功 + +## deselect_multi() + +选定或取消选定下拉列表中多个子元素。 + +参数说明: + +- text_value_index:根据文本、值选或序号取消择选多项 +- para_type:参数类型,可选 'text'、'value'、'index' + +返回:是否选择成功 + +## invert() + +反选。 + diff --git a/docs/使用方法/SessionElement类功能使用.md b/docs/使用方法/SessionElement类功能使用.md new file mode 100644 index 0000000..8934f37 --- /dev/null +++ b/docs/使用方法/SessionElement类功能使用.md @@ -0,0 +1,196 @@ +# class SessionElement() + +session 模式的元素对象,包装了一个Element对象,并封装了常用功能。 + +参数说明: + +- ele: HtmlElement - lxml 库的 HtmlElement 对象 +- page: SessionPage - 元素所在页面对象 + +## inner_ele + +被包装的 HTMLElement 对象。 + +返回: HtmlElement + +## page + +元素所在页面对象,如果是从 html 文本生成的元素,则为 None。 + +返回:SessionElement 或 None + +## tag + +返回元素标签名。 + +返回: str + +## html + +返回元素 outerHTML 文本。 + +返回: str + +## inner_html + +返回元素 innerHTML 文本。 + +返回: str + +## attrs + +以字典格式返回元素所有属性的名称和值。 + +返回: dict + +## text + +返回元素内文本,已格式化处理。 + +返回: str + +## raw_text + +返回元素内未格式化处理的原始文本。 + +返回: str + +## comments + +以 list 方式返回元素内所有注释文本。 + +返回: list + +## link + +返回元素 href 或 src 绝对 url。 + +返回: str + +## css_path + +返回元素 css selector 绝对路径。 + +返回: srt + +## xpath + +返回元素 xpath 绝对路径。 + +返回: srt + +## parent + +返回父级元素对象。 + +返回: SessionElement + +## next + +返回下一个兄弟元素对象。 + +返回: SessionElement + +## prev + +返回上一个兄弟元素对象。 + +返回: SessionElement + +## parents() + +返回第N层父级元素对象。 + +参数说明: + +- num:int - 第几层父元素 + +返回: SessionElement + +## nexts() + +返回后面第 num 个兄弟元素或节点文本。 + +参数说明: + +- num - 后面第几个兄弟元素 +- mode: str - 'ele', 'node' 或 'text',匹配元素、节点、或文本节点 + +返回: [SessionElement, str] + +## prevs() + +返回前 N 个兄弟元素对象。 + +参数说明: + +- num - 前面第几个兄弟元素 +- mode: str - 'ele', 'node' 或 'text',匹配元素、节点、或文本节点 + +返回: [SessionElement, str] + +## attr() + +获取元素某个属性的值。 + +参数说明: + +- attr: str - 属性名称 + +返回: str + +## texts() + +返回元素内所有直接子节点的文本,包括元素和文本节点。 + +参数说明: + +- text_node_only: 是否只返回文本节点 + +返回: 文本组成的 list + +## ele() + +根据查询参数获取元素。 +如查询参数是字符串,可选 '@属性名:'、'tag:'、'text:'、'css:'、'xpath:'、'.'、'#' 方式。无控制方式时默认用 text 方式查找。 +如是loc,直接按照内容查询。 + +参数说明: + +- loc_or_str:[Tuple[str, str], str] - 查询条件参数 + +- timeout: float -不起实际作用,用于和父类对应 + +返回: [SessionElement, str] + +## eles() + +根据查询参数获取符合条件的元素列表。查询参数使用方法和ele方法一致。 + +参数说明: + +- loc_or_str: [Tuple[str, str], str] - 查询条件参数 + +- timeout: float -不起实际作用,用于和父类对应 + +返回: List[SessionElement or str] + +## s_ele() + +功能与 ele() 一致,这里仅用于和 DriverElement 匹配。 + +参数说明: + +- loc_or_str:[Tuple[str, str], str] - 查询条件参数 + +返回: [SessionElement, str] + +## s_eles() + +功能与 eles() 一致,这里仅用于和 DriverElement 匹配。 + +参数说明: + +- loc_or_str: [Tuple[str, str], str] - 查询条件参数 + +返回: List[SessionElement or str] \ No newline at end of file diff --git a/docs/使用方法/SessionOptions类功能使用.md b/docs/使用方法/SessionOptions类功能使用.md new file mode 100644 index 0000000..67e8861 --- /dev/null +++ b/docs/使用方法/SessionOptions类功能使用.md @@ -0,0 +1,129 @@ +# class SessionOptions() + +Session 对象配置类。 + +参数说明: + +- read_file: bool - 创建时是否从 ini 文件读取配置信息 +- ini_path: str - ini 文件路径,为None则读取默认 ini 文件 + +## headers + +headers 配置信息。 + +返回: dict + +## cookies + +cookies 配置信息。 + +返回: list + +## auth + +auth 配置信息。 + +返回: tuple + +## proxies + +proxies 配置信息。 + +返回: dict + +## hooks + +hooks 配置信息。 + +返回: dict + +## params + +params 配置信息。 + +返回: dict + +## verify + +verify 配置信息。 + +返回: bool + +## cert + +cert 配置信息。 + +返回: [str, tuple] + +## adapters + +adapters 配置信息。 + +返回: adapters + +## stream + +stream 配置信息。 + +返回: bool + +## trust_env + +srust_env 配置信息。 + +返回: bool + +## max_redirects + +max_redirect 配置信息。 + +返回: int + +## set_a_header() + +设置 headers 中一个项。 + +参数说明: + +- attr: str - 配置项名称 +- value: str - 配置的值 + +返回: 当前对象 + +## remove_a_header() + +从 headers 中删除一个设置。 + +参数说明: + +- attr: str - 要删除的配置名称 + +返回:当前对象 + +## set_proxies() + +设置proxies参数 + +{'http': 'http://xx.xx.xx.xx:xxxx', 'https': 'http://xx.xx.xx.xx:xxxx'} + +参数说明: + +- proxies: dict - 代理信息字典 + +返回:当前对象 + +## save() + +保存设置到文件。 + +参数说明: + +- path: str - ini文件的路径,传入 'default' 保存到默认ini文件 + +返回:当前对象 + +## as_dict() + +以字典形式返回当前对象。 + +返回: dict \ No newline at end of file diff --git a/docs/使用方法/easy_set 方法.md b/docs/使用方法/easy_set 方法.md index 00f89a0..269271b 100644 --- a/docs/使用方法/easy_set 方法.md +++ b/docs/使用方法/easy_set 方法.md @@ -13,3 +13,23 @@ set_paths(paths) # 见 [初始化] 一节 set_argument(arg, value) # 设置属性,若属性无值(如'zh_CN.UTF-8'),value 为 bool 表示开关;否则value为str,当 value为''或 False,删除该属性项 check_driver_version() # 检查chrome和chromedriver版本是否匹配 ``` +举例场景:我在本地项目 要覆盖默认的configs.ini文件相关内容,具体写法流程。 + 1:新建一个py文件 + 2:导入easy_set + from DrissionPage.easy_set import set_paths + 3:调set_path方法设置相关的参数值 + set_paths( + driver_path=r"E:\flying-soft-package\chrome75\chrome75\chromedriver75.exe", + chrome_path=r"E:\flying-soft-package\chrome75\chrome75\chrome.exe", + user_data_path=r"E:\flying-soft-package\chrome75\chrome75\user_data", + debugger_address='127.0.0.1:9222', + check_version=True + ) + 参数含义: + driver_path:chromedriver.exe路径 + chrome_path: chrome.exe路径 + user_data_path: 用户数据路径 + debugger_address: 调试浏览器地址,例:127.0.0.1:9222 + check_version: 是否检查chromedriver和chrome是否匹配(若不设置,默认是true) + 4:执行这个py文件 右击run。 +