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

概要

- 讲解自动化工具 DrissionPage 的使用
- 用到的工具 Pycharm Chrome浏览器
- 官方网站: http://drissionpage.cn/

工具的优势

  • 无 webdriver 特征
  • 无需为不同版本的浏览器下载不同的驱动
  • …具体看官网,仅这两个条件就已经勾起了我的兴趣

开始整活

安装及导入

pip install DrissionPage -i https://pypi.org/simple

from DrissionPage import ChromiumPage
from DrissionPage import SessionPage as Session
from DrissionPage import WebPage
driver = ChromiumPage()

工具讲解

- ChromiumPage 
	- 类似 selenium的 driver.Chrome(...) 会打开一个浏览器窗口
    - 只能进行GET请求
- SessionPage 
	- 使用起来类似 requests模块的 session,但比session更强大
    - 为了方便我直接取了别名
    - GET/POST 都可以满足以及代理
- WebPage
	- 集成了 ChromiumPage 和 SessionPage,还可以在两者之间自由切换,非常强大

工具介绍说明

  • 由于内容实在较多,所以我不会全部讲解, 剩下的那些感兴趣的小伙伴可以自行研究哈

ChromiumPage

  • 网站以百度一下为案例(https://www.baidu.com/)

请求网址拿到响应数据

driver.get('https://www.baidu.com/')
print(driver.html) # 返回的数据

搜索框定位并输入搜索数据后点击搜索

driver.get('https://www.baidu.com/')
driver.ele("#kw").input("IP地址")  # 定位到搜索框并填充数据
driver.wait.load_start()  # 等待页面加载完成
driver.ele("#su").click()  # 找到搜索按钮并点击搜索
print(driver.html)

数据包监听(很强)

driver.get('https://www.baidu.com/')
driver.ele("#kw").input("IP地址")  # 定位到搜索框并填充数据
driver.wait.load_start()  # 等待页面加载完成
driver.ele("#su").click()  # 找到搜索按钮并点击搜索

while 1:
    # 浏览器打开F12随便找一个数据包进行监听,我筛选的数据包接口是 https://qifu-api.baidubce.com/ip/local/geo/v1/district?
    driver.listen.start('qifu-api.baidubce.com/ip/local/geo/v1/district')
    res = driver.listen.wait()  # 等待并获取一个数据包
    print(res.url)  # 输出数据包url
    print(res.response.headers)  # 输出响应头
    print(res.response.statusText)  # 输出响应状态码
    print(res.response.body)  # 输出响应内容

如果不加 while循环则只会抓取一次, 加上循环以后,在浏览器中操作,只要有包含该关键url的数据包都会经过这里

在这里插入图片描述
在这里插入图片描述

SessionPage

  • 无需控制浏览器

GET请求

from DrissionPage import SessionPage as Session
session = Session()

session.get('https://www.baidu.com/')
print(session.response.headers)
print(session.response.cookies)
print(session.html)

POST请求

# 百度登录接口

from DrissionPage import SessionPage as Session
session = Session()


headers = {
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
    "Accept-Language": "zh-CN,zh;q=0.9",
    "Cache-Control": "no-cache",
    "Connection": "keep-alive",
    "Content-Type": "application/x-www-form-urlencoded",
    "Origin": "https://www.baidu.com",
    "Pragma": "no-cache",
    "Referer": "https://www.baidu.com/",
    "Sec-Fetch-Dest": "iframe",
    "Sec-Fetch-Mode": "navigate",
    "Sec-Fetch-Site": "same-site",
    "Sec-Fetch-User": "?1",
    "Upgrade-Insecure-Requests": "1",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.6045.160 Safari/537.36",
    "sec-ch-ua": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"",
    "sec-ch-ua-mobile": "?0",
    "sec-ch-ua-platform": "\"Windows\""
}
cookies = {
    "BAIDUID_BFESS": "E9CEB2E0983A2AB141D3211CA12899E6:FG=1",
    "ab_sr": "1.0.1_MWE4N2JkZGFjNTk5ODRmYzYwNjVkMmI5YzNkNzM0MTk0NjUxMGE2ZTQ3ZjNiOGU3YzdlMzU4ZjNiM2MzZmQwNjk5ZTFmYmViNWFmZThlMjJlMzE4ZTRjOWFjMzUzMTgxNjg3MWFiYzViMmY2MDkyYmJkYzU0OGNiZTQ5YWY0Yjc3YjQ0MzE2MWMyZjJiMjU4OTFlZDNhZDAwMzJlZDliZg==",
    "RT": "\"z=1&dm=baidu.com&si=udc7z7rrpr&ss=luh0vrcr&sl=2&tt=4ka&bcn=https%3A%2F%2Ffclog.baidu.com%2Flog%2Fweirwood%3Ftype%3Dperf&ld=drg&ul=l3b6&hd=l3io\"",
    "BIDUPSID": "E9CEB2E0983A2AB141D3211CA12899E6",
    "PSTM": "1711981308",
    "H_PS_PSSID": "40080_40373_40415_40304_40467_40457_39662_40506_40446_60043_60027_60030_60046_40510",
    "BA_HECTOR": "85050g8k80050000al0ha4a4fp4j4p1j0lgnu1s",
    "ZFY": "B1poPwprCaKme4YuP7GXTLVDAC:AsMU2Whb8R948kDXA:C",
    "BDORZ": "B490B5EBF6F3CD402E515D22BCDA1598",
    "delPer": "0",
    "PSINO": "3",
    "HOSUPPORT": "1",
    "HOSUPPORT_BFESS": "1",
    "pplogid": "9717PFujKqreRhK0Sf1UDuYoieiE6LAEB9mQBb%2FbLe7K%2BWewdqLYOvXPFFkN0UXhP7M0LEDJ5x8ciWALy2DCVdNabGCEp5MCCWzQk3LEeo2R82s7Ho%2BepjD%2Fh%2BGzUB17cSrO",
    "pplogid_BFESS": "9717PFujKqreRhK0Sf1UDuYoieiE6LAEB9mQBb%2FbLe7K%2BWewdqLYOvXPFFkN0UXhP7M0LEDJ5x8ciWALy2DCVdNabGCEp5MCCWzQk3LEeo2R82s7Ho%2BepjD%2Fh%2BGzUB17cSrO",
    "UBI": "fi_PncwhpxZ%7ETaJcyy29ZDt5D3Z7CU16TJGiAOJ0O1FXtgvbWCC27b0ljhod-zRyJkycnaAfhmAd%7Eh2mLtF",
    "UBI_BFESS": "fi_PncwhpxZ%7ETaJcyy29ZDt5D3Z7CU16TJGiAOJ0O1FXtgvbWCC27b0ljhod-zRyJkycnaAfhmAd%7Eh2mLtF",
    "logTraceID": "c66c90544e2d50c8c62df72576703a62a071995531d7a64564"
}
url = "https://passport.baidu.com/v2/api/?login"
data = {
    "staticpage": "https://www.baidu.com/cache/user/html/v3Jump.html",
    "charset": "UTF-8",
    "token": "991c7792bfee9906fe2ba468a3e0b5f9",
    "tpl": "mn",
    "subpro": "",
    "apiver": "v3",
    "tt": "1711983720050",
    "codestring": "",
    "safeflg": "0",
    "u": "https://www.baidu.com/",
    "isPhone": "",
    "detect": "1",
    "gid": "1E0EF04-C04E-4140-AD02-CD91B109E0C1",
    "quick_user": "0",
    "logintype": "dialogLogin",
    "logLoginType": "pc_loginDialog",
    "idc": "",
    "loginmerge": "true",
    "mkey": "",
    "splogin": "rate",
    "username": "188888888888",
    "password": "jtMa/F0Xc0St7r2ElsZ5Hio/vBPLPmsLt2acPP3KnSej0RL5loRjjV4TvVU6XLUoQslkvdbte7Xl6eRUqewG232tRiQczkbR2wKvebM3BQ6iSeFcGcBIZFJLSf2Rczyg0jCX23ZJjiFbz626KqJp/gfw2FCOAV9tDjNl/nShHyM=",
    "mem_pass": "on",
    "isagree": "on",
    "rsakey": "Sroqd9745nnbn7xNKsgphHMFE5bVujvQ",
    "crypttype": "12",
    "ppui_logintime": "29529",
    "countrycode": "",
    "fp_uid": "",
    "fp_info": "",
    "loginversion": "v4",
    "supportdv": "1",
    "bdint_sync_cookie": "",
    "ds": "UhoXZLMh4lSAasL1X8wWKbzUBBeDkmVPGD7bfSTp4lnok0eCqYlIdgjLsZbaGavXKOU9Begg+sZWXgXP3XAfvQfRDA6CXnBzqhFtzJM6YaZYM33tPc11Ja+r0AzWboioUPzk59jdNX4NrN/uOyTBWEj9X9JUAzqu895bSmEi2u3N6CLGLKl6dggeQVj2wla3OTdVDOb0N6t08Xz5I74sreKuyTX+S5jod1S72S/iZLijpVpJhaUaD+GhgQaST6smIsXjkNFBwxkHktphpP6d+/5uOrafp3veBZhGUIZX2RMvi8E9oTdKZ/V4rKRZWajxpmdFEjnYvdgNPcowzOj/SbkGDMpuBu9Fwh7weeWUHIaXqtfYfuz+G4tg//YOse+ak6qSznPzd02VeeWH3AvjLXQHNeu2EW9aJl4L8Gl6vWjF7yMQfP1gln6RQuAWMX6X72xntzJKtM2Kgfvwxu3E0+EFGs1JFtPNQMmltioQHcN4tgdsGRtAlSd42EIxTp/pSdnGGvWzFgtTf2oAMjjvChc4IbERZIsXKVDyGMDVrW6mg1B3Z/Ld3QFo6HmjHEVZObVNTZQ3TtW1iJ1a4OJzUk8dxJ8vq0VOPSkAXf7LicbMuBw8Ab8gdxIxf56JSIqC7Kb1Cbev74xG01XwIC7liKuLf05CTG81yj0guDOqx9JTx7/cIkhZYW7hZ/PHOHyBFyYfOVubeO4GxB1ybNDIp9ldwNGf64LSTo094IIoPSgcUvVaWqFvhtAN8kx2TxpKJp8Avwi0uJLtxvBuYSYv7ACiORDmKupeFFZqyOEOFTuvHBhxX6JItRtPCZFeP4eKJrYi1BKVfCLHF9pRTzDtX6cXqgmrNj/giEqcHH8J89UvlC6x4mnBppcqaZ4nmYdkURzXsH3pjzj+dmFN3+/IM2Pqy+7L7wDRRYwLDUTMd4hJXEJ39W5m8PlNbteIyLXdzFZk+9K+MpqIX1vnlWkV+EOpPcCwgM/p0Q+l4bmLaJKQbx7ntSVAOFPBw6UHs5z8bVFz1tb7H0KOkThwO/jK32SGnCYxN4a97VDkwyw1SWcf3+HhmujfbLQJ8grozAUcGXBkREn1UEGfHdvDGU7OSwNWRtmSqAR86aENQSi59rS4D2etPLeunbTD1ruuscH2/bO4h5R1VzSyqlhTXiyFA1jMr7Ac31FSEYeUbfeHBSmRDyzvrHnMsFEPhwbid3yUcPtP2BHOglxB437whad9Ov4rzIq/pSwaYQsjyXTBPRhOOVQwcv5zfQI2h4LNr3pMQD22DOPNfkRMpO1PWyX8tQPwz/yLIsBs7YRopnLUhgZOdSYQDc2IXGx0xc/WVASVBZeKc/sn98A8pHAff13y/F+Y9KOW8MM8PU2+F92ueRM0/GfWJZR3EFbMgL6vs1Ef2XjvfqmJhjtAc+/Ew6VqAWB1cpq9qEgJgCv84T0T52g=",
    "tk": "9717PFujKqreRhK0Sf1UDuYoieiE6LAEB9mQBb/bLe7K+WewdqLYOvXPFFkN0UXhP7M0LEDJ5x8ciWALy2DCVdNabGCEp5MCCWzQk3LEeo2R82s7Ho+epjD/h+GzUB17cSrO",
    "dv": "tk0.270197286062948241711983691046@bbv0UyCFEcsmwH8H~nHVt6LgY8HghDsFtDLR7zGL5CN9g3uk8RCk7isFqlukqc7otC0g5hF7YDHt68LzowLgYgE-7rFJtQGBblCFEbDkob6mbbut0hFVPB8HgDLghFHtiws7YDPL63EV~Sp9Hc6Fob6Lbwsk8csmwH8H~nHVt6LgY8HghDsFtDLR7zGL5CN9g3ukHgCk3isFqlukqc7otC0g5hF7YDHt68LzowLgYgE-7rFJtQGBbg6zsgDq__pv0M~sFoz6BbzsFHc6zE~ut0hFVPB8HgDLghFHtiws7YDN-SSpJP3H-gz8-YVGH3lG9gisFqy6BbzCFscsFEysmwH8H~nHVt6LgY8HghDsFtDLR6QEghap-~3DkobCkEcszVrukvzsFNc7otC0g5hF7YDHt68LzowLgYgE-7rFJtQGLbwskswukHR6Bbr6zKyut0hFVPB8HgDLghFHtiws7YDER7Wp93l7R5SEnh3EMbwskKruks-Cmbz61sgut0hFVPB8HgDLghFHtiws7YDPL63EV~Sp97iyrrI~rCuwcmJhCvIsBbrukowC8__xvlP2cbu1vRsko~6zvy61q-s1VlCkvlsFEwsFVyszN~sFql6K__ivmIn0lEnsfurYRPREXNJtUGnHXN-YQurwgpJ03GJ3XG98_Fvtsmbbuko~s1qcCFsyuko~s1qcsFqysmbwCFvbuko~s1qcsFqlsq__",
    "fuid": "FOCoIC3q5fKa8fgJnwzbE67EJ49BGJeplOzf+4l4EOvDuu2RXBRv6R3A1AZMa49I27C0gDDLrJyxcIIeAeEhD8JYsoLTpBiaCXhLqvzbzmvy3SeAW17tKgNq/Xx+RgOdb8TWCFe62MVrDTY6lMf2GrfqL8c87KLF2qFER3obJGkmn0oq5xTWD43OudD/pGogpk16NONhKjHXnomVUMd6suti94/aebzvoussIeRnUjurLwKpIToVhpDcCJmzk5uUnA5KwEIhsekptPbUQc4p207/65aYBEEf7/i0oFaJ37zSD3rH8JOudPxJORNS7SCt6rEeCerZiOC2HS/q3kWYbpA5RdGpipmODqHTwPvOqFLOQHvyhUQrrHDS6OPGdMUX7jyZCUzvCVemR8SJFAwk1UHv1DxZiH330Apc6oKkZo0Y6IJXad8xN1gQMZ1tOmckSecr9yhMSRLVoFktEC1isIoEUuh2L0ZKEXbxZOgmKXcFMb7+JFWxNGoA0JNiv6hCb0gkXpkEpISi6tVHh+hsQifjACGGz0MbLI9AAutvQNmLovQE8DrrUkOPSWZkiBwIUvxonSGS2lgiNZBxgK/Nad6P3sfvyvYhyXNwxm6SzH+Oja1l6cy9uoP7y446ILa1CLEOaV1jDkGoksNhRtn7B1VPovN1TRU04qLrmECuDGMBVR4vlhy8DqZQ1/LUEQ9mrM1XTShMu8Y6z7mcjIEx0SRhpMWhMo8MNW10I79rYiEZqj4cFtwDdJ/UZaa6iAMtId63mg/OycCYejlS4t8D766rmDHhDudxgjeO0sD8tNRkUnExmTzgWh7Lwq6FXx6a9+JIpQ6nVWxL4vL34i6mfzL4hLXcGAwm/blGCaj2qqlWEsBt+M7lZPMgMjubSlY5i2BFDFEI/FRG/MmQuDtpb0mbiXgFv9JPE1K/bdG7qMeU4yMp72LTzOOrJ6QBGMchBmwlpfnaMegzMZbIZt1BAjzkovG4kdAIyuxdvhnpBOcuRCO3PwUSWeipr32kg7rh+26VQGmUjUFB9qdWM7cM+xhEMNzi6OXbElHkA3erw54tXrxfzO8r5i/hVAMD5lmRW7zauvTts98AVvqIMSVA8vSA4Tm4Z6OA+zAWRuAfqTZYRlp9I4pEOc85gAEpZ4sd1dl7ZsDQM77UWVHypv4+aIVxlWi6jkMK+VCGNGG+ki2NSHb/I1/IeOdtnUD+FFEjsEVUO27UponOPHnWdM3X7JqhncwlFWp7ecHEL1Omsg98jm/klJ3aRE1kTuzptCsDnIwjfVJ9QODEOux3qU+1RQ==",
    "s": "je5vXz0aN3Z3TMAyAg/0AeLlggFPJ5H3fi+YhuoX4iGrRCRn56zWCRVqMJQVuiiI7rTNWkRFF4BrhrfKn0CPvH7MYaTyA4hGZ9tnbj1edPSVScjIEu3KViHm6qRWvtHKkI9gtaOw08jdZJYDTsFOrDmFD6FqGqbz1nbfGw9Ny5LiiFGCDIRgR8t6R3Xii7RV2ggQGNPe9Yct4AA0uC1gj1g2UKV91s5btJ8lYEqJVLZQZLlXW/Vukat/ADTGl1oHqJsmXG9BUjguLIT7PucqgFnpxttpE2RYgShaPZ3xn8CFjMIHFwzrc3j8CSeEHTiKG9rC7HwftVpdRhVnf8vzNk0I8jrRDkSUEV1xzTzkHyCTJPO6votUyUw5+VB2IIpMks6p2tsr1OkuWrTtQPCbk2rEe6RV4WbxkVh3e8jygMA=",
    "k": "91342SAlGaAC8/vdQGkTgrr7W2qgfE5XmRM7k1tmwhbSXjYMW8z17JHd/8LMn93nFNhYBa+RzZta+YCEYN8eDFlGXizWzI/Te1+RNI+6zCsEgycBroM7LkvluS/D3Ne0XZViZxUiO2pwoz3PtlJs5f1ocYh4ADkbAPC9PPJtFvzbqLI=",
    "traceid": "26449A01",
    "callback": "parent.bd__pcbs__he30mq",
    "time": "1711983720",
    "alg": "v3",
    "sig": "dnpPNkVZRTZaSExMQlVock9nazJ6VE9JSjYwdThTZDBTVE9BS28rVWJYcnRiK2g1RWt4cnZVT1lvcndSVGlWMg==",
    "elapsed": "2",
    "shaOne": "007923016aec0fea625c90adbba1c428e8e3b405",
    "rinfo": "{\"fuid\":\"205a59d18029be956d5580d67214be3c\"}"
}


session.post(url, headers=headers, data=data, cookies=cookies)
print(session.response.headers)
print(session.response.cookies)
print(session.html)

cookie设置

# 这些设置是全局参数,设置后每次请求都会使用它们
session.set.cookies([{'name': 'a', 'value': '1'}, {'name': 'b', 'value': '2'}])

为什么不直接用requests模块?

  • 首先ChromiumPageSessionPage之间是可以互通的,包括cookie信息
  • SessionPage在请求数据之后可以直接使用内置方法解析数据,不用导其他库了
  • 其他还有很多,我就不总结了

WebPage

  • 整合了SessionPageChromiumPage,实现了两者之间的互通

  • 它既可以操控浏览器,也可以收发数据包,并且会在两者之间同步登录信息

  • 剩下的就不讲了,睡觉!!!

贴一下我的名片在这里插入图片描述

  • 9
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值