diff --git a/DrissionPage/driver_page.py b/DrissionPage/driver_page.py
index 7828d6b..4a91737 100644
--- a/DrissionPage/driver_page.py
+++ b/DrissionPage/driver_page.py
@@ -529,15 +529,11 @@ class ToFrame(object):
self.page = page
def __call__(self, condition: Union[int, str, tuple, WebElement, DriverElement] = 'main'):
- """用于兼容旧版,以后的版本会删除"""
- from warnings import warn
- warn("建议用to_frame.main()等方式使用此功能。", DeprecationWarning, stacklevel=2)
-
- if condition == 'main':
- self.main()
- elif condition == 'parent':
- self.parent()
- elif isinstance(condition, (DriverElement, WebElement)):
+ """跳转到(i)frame,可传入id、name、序号、元素对象、定位符 \n
+ :param condition: (i)frame,可传入id、name、序号、元素对象、定位符
+ :return: 当前页面对象
+ """
+ if isinstance(condition, (DriverElement, WebElement)):
self.by_ele(condition)
elif isinstance(condition, int):
self.by_index(condition)
diff --git a/docs/使用方法/使用其它浏览器.md b/docs/使用方法/使用其它浏览器.md
index e66a6a2..beff2a0 100644
--- a/docs/使用方法/使用其它浏览器.md
+++ b/docs/使用方法/使用其它浏览器.md
@@ -1,6 +1,6 @@
目前设置功能只支持 Chrome 浏览器,如要使用其它浏览器,可使用 selenium 原生方法创建 driver,然后用 Drission 对象接收即可。
-!> **注意:** 本库所有功能暂时只对 Chrome 做了完整测试。
+!> **注意:**
本库所有功能暂时只对 Chrome 做了完整测试。
```python
from selenium import webdriver
diff --git a/docs/使用方法/元素操作.md b/docs/使用方法/元素操作.md
index d1fb643..98aa2f4 100644
--- a/docs/使用方法/元素操作.md
+++ b/docs/使用方法/元素操作.md
@@ -5,10 +5,11 @@ d 模式下的`DriverElement`对象可以对浏览器相应元素进行控制。
## click()
此方法用于点击元素。可以选择是否用 js 方式点击,可以在点击失败时自动重试。默认情况下,使用 selenium 原生的点击方法,如果重试超过限定时间,自动改用 js 方式点击。可通过`by_js`参数设置点击方式。
-此设计除了可保证点击成功,还可以用于检测页面上的遮罩层是否消失。遮罩层经常出现在 js 方式翻页的时候,它出现的时候会阻碍 selenium 的原生点击,所以可以通过对其下面的元素不断重试点击,来判断遮罩层是否存在。当然,这个方法是否可行要看具体网页设计。
+此设计除了可保证点击成功,还可以用于检测页面上的遮罩层是否消失。遮罩层经常出现在 js 方式翻页的时候,它出现的时候会阻碍 selenium
+的原生点击,所以可以通过对其下面的元素不断重试点击,来判断遮罩层是否存在。当然,这个方法是否可行要看具体网页设计。
而如果直接使用 js 进行点击,则可无视任何遮挡,只要元素在 DOM 内,就能点击得到,这样可以根据须要灵活地对元素进行操作。
-!> 注意:使用 js 方式点击时,是不会进行重试的。
+!> 注意:
使用 js 方式点击时,是不会进行重试的。
参数:
@@ -95,8 +96,8 @@ ele.r_click_at(50, 50)
此方法用于向元素输入文本或组合键,也可用于输入文件路径到`input`元素(文件间用`\n`间隔)。可选择输入前是否清空元素。
insure 参数为 `True` 时可自动确保输入正确。该功能是为了应对 selenium 原生输入在某些i情况下会失效的问题。但只能用于 input 元素且 `type` 为 `text` 的情况。 接收组合键的时候可接收
selenium 的 `Keys` 对象的值。组合键要放在一个 `tuple` 中传入。
-!> **注意:** `insure` 为 `True` 时不能用于接收组合键。
-?> **Tips:** 有些文本框可以接收回车代替点击按钮,可以直接在文本末尾加上`'\n'`。
+!> **注意:**
`insure` 为 `True` 时不能用于接收组合键。
+?> **Tips:**
有些文本框可以接收回车代替点击按钮,可以直接在文本末尾加上`'\n'`。
参数:
diff --git a/docs/使用方法/启动配置/Session启动配置.md b/docs/使用方法/启动配置/Session启动配置.md
index bc5a827..d2ac7c5 100644
--- a/docs/使用方法/启动配置/Session启动配置.md
+++ b/docs/使用方法/启动配置/Session启动配置.md
@@ -1,7 +1,7 @@
`SessionOptions`对象用于管理`Session`对象连接配置。
其使用逻辑与`DriverOptions`相似。
-!> **注意:** `SessionOptions`仅用于管理启动配置,程序启动后再修改无效。
+!> **注意:**
`SessionOptions`仅用于管理启动配置,程序启动后再修改无效。
# `SessionOptions`类
diff --git a/docs/使用方法/打包程序.md b/docs/使用方法/打包程序.md
index 1656c55..da248a6 100644
--- a/docs/使用方法/打包程序.md
+++ b/docs/使用方法/打包程序.md
@@ -23,7 +23,7 @@ so = SessionOptions(read_file=False)
page = MixPage(driver_options=do, session_options=so)
```
-!> **注意** ,这个时候`Drission`的两个参数都要输入内容,如果其中一个不需要设置可以输入`False`.
+!> **注意**
这个时候`Drission`的两个参数都要输入内容,如果其中一个不需要设置可以输入`False`.
如:
diff --git a/docs/使用方法/查找页面元素.md b/docs/使用方法/查找页面元素.md
index e7b7d55..6b2d78d 100644
--- a/docs/使用方法/查找页面元素.md
+++ b/docs/使用方法/查找页面元素.md
@@ -321,7 +321,7 @@ ele2 = ele1.ele('text:some text')
ele2 = ele1.ele('some text')
```
-?> **Tips:** 若要查找的文本包含`text:` ,可下面这样写,即第一个`text:` 为关键字,第二个是要查找的内容:
+?> **Tips:**
若要查找的文本包含`text:` ,可下面这样写,即第一个`text:` 为关键字,第二个是要查找的内容:
```python
ele2 = page.ele('text:text:')
diff --git a/docs/使用方法/获取网页信息.md b/docs/使用方法/获取网页信息.md
index 834b1c7..5c09d66 100644
--- a/docs/使用方法/获取网页信息.md
+++ b/docs/使用方法/获取网页信息.md
@@ -153,7 +153,7 @@ print(page.timeouts)
此属性返回当前标签页的序号。
-!> **注意:** 自动化过程中若手动点击标签页,会使被点击标签页的 handle 排到首位,从而导致排序与视觉效果不一致。
+!> **注意:**
自动化过程中若手动点击标签页,会使被点击标签页的 handle 排到首位,从而导致排序与视觉效果不一致。
## current_tab_handle
diff --git a/docs/使用方法/页面操作.md b/docs/使用方法/页面操作.md
index c20efcc..e0414ce 100644
--- a/docs/使用方法/页面操作.md
+++ b/docs/使用方法/页面操作.md
@@ -17,7 +17,7 @@
此方法用于转换`MixPage`对象的模式。
切换后默认在目标模式重新跳转到原模式所在 url。
-!> **注意:** s 模式转 d 模式时,若浏览器当前网址域名和 s 模式不一样,必定会跳转。
+!> **注意:**
s 模式转 d 模式时,若浏览器当前网址域名和 s 模式不一样,必定会跳转。
参数:
@@ -256,7 +256,27 @@ page.to_frame.by_id('iframe_id')
page.to_frame.by_name('iframe_name')
# 切换到页面中第一个框架
-page.to_frame.by_id(0)
+page.to_frame.by_index(0)
+
+# 使用定位符查找元素,再实现切换
+page.to_frame.by_loc('tag:iframe')
+
+# 先获取 iframe 元素,再传入实现切换
+iframe = page.ele('tag:iframe')
+page.to_frame.by_ele(iframe)
+```
+
+`ToFrame`类实现了`__call__()`方法,可自动判断传入类型,使用比较简便。
+
+```python
+# 切换到 id 值为 'iframe_id' 的框架
+page.to_frame('iframe_id')
+
+# 切换到 name 值为 'iframe_name' 的框架
+page.to_frame('iframe_name')
+
+# 切换到页面中第一个框架
+page.to_frame(0)
# 使用定位符查找元素,再实现切换
page.to_frame('tag:iframe')
@@ -266,7 +286,8 @@ iframe = page.ele('tag:iframe')
page.to_frame(iframe)
```
-
+!> **注意:**
+新版本删除了`to_frame('main')`和`to_frame('parent')`的用法。
请改用`page.to_frame.main()`和`page.to_frame.parent()`的写法。
## to_tab()
@@ -278,7 +299,7 @@ page.to_frame(iframe)
返回:None
-!> **注意:** 自动化过程中若手动点击标签页,会使被点击标签页的 handle 排到首位,从而导致排序与视觉效果不一致。
+!> **注意:**
自动化过程中若手动点击标签页,会使被点击标签页的 handle 排到首位,从而导致排序与视觉效果不一致。
```python
# 跳转到第一个标签页
@@ -306,7 +327,7 @@ page.create_tab('http://www.baidu.com')
此方法用于关闭指定的标签页,标签页可以是序号或 handle 值,可关闭多个。默认关闭当前的。
-!> **注意:** 当程序使用的是截关的浏览器,获取到的 handle 顺序和视觉效果不一致,不能按序号关闭。
+!> **注意:**
当程序使用的是截关的浏览器,获取到的 handle 顺序和视觉效果不一致,不能按序号关闭。
参数:
@@ -326,7 +347,7 @@ page.close_tabs((0, 2))
此方法用于关闭指定标签页以外的标签页,标签页可以是序号或 handle 值,可保留多个。默认保留当前的。
-!> **注意:** 当程序使用的是截关的浏览器,获取到的 handle 顺序和视觉效果不一致,不能按序号关闭。
+!> **注意:**
当程序使用的是截关的浏览器,获取到的 handle 顺序和视觉效果不一致,不能按序号关闭。
参数:
diff --git a/docs/入门指南/基本概念.md b/docs/入门指南/基本概念.md
index df28566..d6fbbf3 100644
--- a/docs/入门指南/基本概念.md
+++ b/docs/入门指南/基本概念.md
@@ -146,4 +146,4 @@ page = MixPage()
这个功能支持用户保存不同的配置文件,按情况调研,也可以支持直接把配置写在代码里面,屏蔽读取配置文件。
-?> **Tips:** 当须要打包程序时,必须把配置写到代码里,否则会报错。
\ No newline at end of file
+?> **Tips:**
当须要打包程序时,必须把配置写到代码里,否则会报错。
\ No newline at end of file
diff --git a/docs/入门指南/快速上手.md b/docs/入门指南/快速上手.md
index 58bf6d9..89f7c90 100644
--- a/docs/入门指南/快速上手.md
+++ b/docs/入门指南/快速上手.md
@@ -33,7 +33,7 @@ page.get('https://www.baidu.com')
## 手动配置方式
-!> **注意:** 这段代码只用于设置配置文件中的路径信息,**运行一次即可**,勿写到正式程序里 。
+!> **注意:**
这段代码只用于设置配置文件中的路径信息,**运行一次即可**,勿写到正式程序里 。
有些版本的 Chrome 程序无法获取正确的 driver,就须要手动配置路径。
新建一个**临时文件** ,修改并运行以下代码,可手动指定 Chrome 和 driver 路径,记录到配置文件,以后程序会自动读取其中的配置,无须再写。
diff --git a/docs/入门指南/特性演示/与requests代码对比.md b/docs/入门指南/特性演示/与requests代码对比.md
index 7b412a1..b3a3afd 100644
--- a/docs/入门指南/特性演示/与requests代码对比.md
+++ b/docs/入门指南/特性演示/与requests代码对比.md
@@ -19,7 +19,7 @@ page.get(url)
title = page('tag:h1').text
```
-?> **Tips:** DrissionPage 自带默认 headers
+?> **Tips:**
DrissionPage 自带默认 headers
## 下载文件
diff --git a/docs/实用示例/下载星巴克产品图片.md b/docs/实用示例/下载星巴克产品图片.md
index a34e0de..656309f 100644
--- a/docs/实用示例/下载星巴克产品图片.md
+++ b/docs/实用示例/下载星巴克产品图片.md
@@ -47,7 +47,7 @@ for div in divs:
page.download(img_url, r'.\imgs', rename=name)
```
-?> **Tips:** 程序中无须创建`imgs`文件夹,`download()`方法会自动创建。
+?> **Tips:**
程序中无须创建`imgs`文件夹,`download()`方法会自动创建。
# 结果
@@ -62,4 +62,4 @@ for div in divs:
除此以外,遇到保存路径有重名文件时,该方法也能自动对新文件进行重命名(添加序号),避免路径冲突。
该方法会返回已下载文件的绝对路径,方便程序进一步使用。
-?> **Tips:** 遇到重名时,`download()`方法可选择`skip`、`overwrite`、`rename`三种方式处理。
\ No newline at end of file
+?> **Tips:**
遇到重名时,`download()`方法可选择`skip`、`overwrite`、`rename`三种方式处理。
\ No newline at end of file
diff --git a/docs/实用示例/同时操作多个浏览器.md b/docs/实用示例/同时操作多个浏览器.md
index d48e33c..b0d3daa 100644
--- a/docs/实用示例/同时操作多个浏览器.md
+++ b/docs/实用示例/同时操作多个浏览器.md
@@ -4,7 +4,7 @@
实际上,因为`MixPage`会自动根据传入配置创建`Drission`对象,因此只需设置不同的`DriverOptions`和`MixPage`对象即可。
-!> **注意:** 这些对象必须设置不同的`local_port`和`user_data_path`参数,否则会造成冲突。
+!> **注意:**
这些对象必须设置不同的`local_port`和`user_data_path`参数,否则会造成冲突。
```python
from DrissionPage.config import DriverOptions