自动化工具DrissionPage的使用(二)

概要

继上篇-> 自动化工具DrissionPage的使用()我们继续研究 DrissionPage的使用

开始整活

  • 对于自动化程序,标签定位以及获取标签对应的数据是重中之重
  • 本次以豆瓣排行榜为例 (https://movie.douban.com/chart)

SessionPage

获取SessionPage对象

from DrissionPage import SessionPage as Session
driver = Session()
driver.get('https://movie.douban.com/chart')

获取标签内所对应的数据

# 获取到该标签对象后,所有获取标签对应数据的方式都是通用的

Ele = driver.ele('#db-global-nav') # 这里以id为db-global-nav的标签做案例
print(Ele.html)  # 该标签对应的html源码
print(Ele.tag)  # 获取该id为db-global-nav的标签类型, --> div
print(Ele.text)  # 标签内所有的文本
print(Ele.attrs) # 标签内所有的属性以及属性值.以字典的形式展示 --> {'id': 'db-global-nav', 'class': 'global-nav'}
print(Ele.link)  # 标签内的 href 属性或 src 属性,都没有则返回None

id属性

# 标签定位
<div id="db-global-nav"> --> 对应元素定位方式 --> driver.ele('#db-global-nav')

# 获取标签内所对应的数据
Ele = driver.ele('#db-global-nav')
print(Ele.html)  # 该标签对应的html源码
print(Ele.tag)  # 获取该id为db-global-nav的标签类型, --> div
print(Ele.text)  # 标签内所有的文本
print(Ele.attrs) # 标签内所有的属性以及属性值.以字典的形式展示 --> {'id': 'db-global-nav', 'class': 'global-nav'}
print(Ele.link)  # 标签内的 href 属性或 src 属性,都没有则返回None

class属性

# 标签定位
<div class="indent"> --> 对应元素定位方式 --> driver.ele('.indent')

其他属性

# 固定规则: @属性名=属性值
<td valign="top"> --> 对应元素定位方式 --> driver.ele('@valign=top') 

print(driver.ele('@valign=top').html) # 获取第一个满足条件的标签下的html源码
print(driver.eles('@valign=top')) # 获取所有满足条件的标签,返回的是一个列表

获取所有的a标签

a_list = driver.eles('tag:a')
for a in a_list:
    print(a.link)
    print(a.text)

获取指定标签下所有的a标签

# 当前以 <div class="indent"> 为案例

parentEle = driver.ele(".indent") # 定位到indent
a_list = parentEle.eles('tag:a') # 获取indent下的所有a标签
for a in a_list:
    print(a.link)  # a标签链接
    print(a.text)  # a标签内所有的文本
    print(a.attrs['title'])  # a标签title属性值
    print(a.attrs['class'])  # a标签class属性值

包含(模糊)匹配

# 固定规则: @属性名:属性值
<td valign="top"> --> 对应元素定位方式 --> driver.eles('@valign:top')

# 获取所有属性值包含top并且属性名为valign的标签, 如果只匹配单个则是 driver.ele('@valign:top')

xpath匹配

Ele = driver.ele('#content')  # 定位到该标签
table_list = Ele.eles("xpath://table") # 获取标签下所有的table
for t in table_list:
    # 获取每个 table 下 class 为 p12下面的a标签的链接和文本
    link = t.ele(".pl2").ele('xpath:./a').link
    text = t.ele(".pl2").ele('xpath:./a').text
    print(link, text)

在这里插入图片描述

设置代理 ip

driver.set.proxies(http='http://localhost:1080', https='你的代理地址')  # https为空时使用http的值

是否验证SSL证书

driver.set.verify(on_off=True)

设置请求头

driver.set.headers({...}) # 会覆盖已有请求头
driver.set.header(name='key', value='val') # 单独设置某个值

重定向次数

driver.set.max_redirects(times=15) # 设置最大重定向次数为15次

SessionOptions

可以先创建SessionOptions对象再初始化SessionPage

from DrissionPage import SessionPage as Session, SessionOptions

so = SessionOptions()
so.set_retry(times=5, interval=6)  # 设置重试次数为5, 每次请求最大时间为6
so.set_proxies('代理地址') # 设置代理
driver = Session(session_or_options=so)

ChromiumPage

  • 上文已经介绍过,这个模式是用来操控浏览器的
  • 操作方式和我们熟悉的selenium雷同

获取ChromiumPage对象

from DrissionPage import ChromiumPage
driver = ChromiumPage()

元素定位&获取元素对应数据

  • SessionPage

获取cookie

driver.get('https://movie.douban.com/chart')
print(driver.get_cookies())  # 获取当前页面的cookie

页面刷新

driver.refresh()
driver.wait.load_complete() # 等待页面加载完成

WebPage

  • 两种模式d对应ChromiumPage, s对应SessionPage

模式切换

from DrissionPage import WebPage

pageC = WebPage()  # 默认ChromiumPage模式创建对象
pageS = WebPage('s')  # 指定SessionPage模式创建对象
pageS.change_mode(copy_cookies=True) # 切换到 d 模式并传递cookie

cookie传递

pageS.cookies_to_session(copy_user_agent=True, copy_cookies=True) # 把浏览器里的 cookie 以及 ua 传递给Session对象
pageS.cookies_to_browser() # # 把 cookie 传递给 浏览器
  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
DrissionPage是一款基于Python语言编写的自动化测试框架。它采用了Page Object设计模式,将页面元素和测试逻辑分离,使得测试脚本更易读、易维护。 DrissionPage的框架结构清晰,包含了核心模块和扩展模块。核心模块主要包括Page模块、Element模块和Driver模块。Page模块用于封装页面对象,如登录页面、首页等;Element模块用于封装页面元素,如按钮、输入框等;Driver模块用于封装浏览器驱动,如Chrome、Firefox等。这些模块相互配合,提供了丰富的功能和方法,使得自动化测试变得简单高效。 DrissionPage的特点之一是支持多种浏览器,并提供了多个浏览器驱动的封装。用户可以根据需求选择不同的浏览器进行测试,并通过配置文件简单切换。同时,DrissionPage还提供了丰富的断言方法和日志记录功能,方便用户进行结果验证和错误追踪。 另外,DrissionPage还支持数据驱动和关键字驱动的测试方式。用户可以将测试数据与测试脚本分离,实现数据的复用和灵活性。同时,用户可以根据需求定义自己的关键字,简化测试脚本的编写和维护。 总之,DrissionPage是一个功能强大的自动化测试框架,它的设计理念和丰富的功能使得自动化测试变得简单高效。无论是初学者还是有经验的测试工程师,都可以通过学习和使用DrissionPage来提高测试效率和质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值