自动化测试框架:DrissionPage(3)——其他用法

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()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值