1、SessionPage
1)SessionPage传递控制权
当须要使用多个页面对象共同操作一个页面时,可在页面对象创建时接收另一个页面间对象传递过来的Session对象,以达到多个页面对象同时使用一个Session对象的效果。
# 创建一个页面
page1 = SessionPage()
# 获取页面对象内置的Session对象
session = page1.session
# 在第二个页面对象初始化时传递该对象
page2 = SessionPage(session_or_options=session)
2)SessionPage与requests的一些对比
SessionPage基于 requests 进行网络连接,因此可使用 requests 内置的所有请求方式,包括get()、post()、head()、options()、put() 、patch()、delete()。
get()方法语法与 requests 的get()方法一致,在此基础上增加了连接失败重试功能。与 requests 不一样的是,它不返回Response对象。
SessionPage目前只对get()和post()做了封装和优化,其余方式可通过调用页面对象内置的Session对象使用。
from DrissionPage import SessionPage
page = SessionPage()
# 获取内置的 Session 对象
session = page.session
# 以 head 方式发送请求
response = session.head('https://www.baidu.com')
print(response.headers)
2、ChormiumPage
1)传递控制权
当须要使用多个页面对象共同操作一个页面时,可在对象间传递驱动器。
这可以实现多个页面对象共同控制一个浏览器。
# 创建一个页面
page1 = ChormiumPage()
# 获取页面对象的浏览器控制器
driver = page1.driver
# 把控制器对象在第二个页面对象初始化时传递进去
page2 = ChormiumPage(driver_or_options=driver)
2)页面截图
# 对整页截图并保存
page.get_screenshot(path='D:\\page.png', full_page=True)
path:保存图片的完整路径,文件后缀可选'jpg'、'jpeg'、'png'、'webp',为None时以 jpg 格式保存在当前文件夹
full_page:是否整页截图,为True截取整个网页,为False截取可视窗口
3)页面跳转
back(),此方法用于在浏览历史中后退若干步。
page.back(2) # 后退两个网页
forward(),此方法用于在浏览历史中前进若干步。
page.forward(2) # 前进两步
refresh(),此方法用于刷新当前页面。
page.refresh() # 刷新页面
4)执行脚本或命令
# 用传入参数的方式执行 js 脚本显示弹出框显示 Hello world!
page.run_js('alert(arguments[0]+arguments[1]);', 'Hello', ' world!')
5)窗口管理
page.set.window.maximized() # 窗口最大化
page.set.window.minimized() # 窗口最小化
page.set.window.fullscreen() # 用于使窗口切换到全屏模式
page.set.window.normal() # 用于使窗口切换到普通模式
page.set.window.size(500, 500) # 用于设置窗口大小。
page.set.window.location(500, 500) # 用于设置窗口位置
6)滚动页面
page.scroll.to_top() # 用于滚动页面到顶部,水平位置不变
page.scroll.to_bottom() # 用于滚动页面到底部,水平位置不变
page.scroll.to_half() # 用于滚动页面到垂直中间位置,水平位置不变
page.scroll.to_rightmost() # 用于滚动页面到最右边,垂直位置不变
page.scroll.to_leftmost() # 用于滚动页面到最左边,垂直位置不变
page.scroll.to_location(300, 50) # 用于滚动页面到滚动到指定位置
page.scroll.up(30) # 用于使页面向上滚动若干像素,水平位置不变
page.scroll.down(30) # 用于使页面向下滚动若干像素,水平位置不变
page.scroll.right(30) # 用于使页面向右滚动若干像素,垂直位置不变
page.scroll.left(30) # 用于使页面向左滚动若干像素,垂直位置不变
scroll.to_see(),用于滚动页面直到元素可见。
# 滚动到某个已获取到的元素
ele = page.ele('tag:div')
page.scroll.to_see(ele)
# 滚动到按定位符查找到的元素
page.scroll.to_see('tag:div')
7)处理弹出消息
handle_alert()
此方法 用于处理提示框。
它能够设置等待时间,等待提示框出现才进行处理,若超时没等到提示框,返回False。
也可只获取提示框文本而不处理提示框。
# 确认提示框并获取提示框文本
txt = page.handle_alert()
# 点击取消
page.handle_alert(accept=False)
# 给 prompt 提示框输入文本并点击确定
paeg.handle_alert(accept=True, send='some text')
# 不处理提示框,只获取提示框文本
txt = page.handle_alert(accept=None)
8)关闭浏览器
page.quit()