后来 我不再使用selenium了

2644 篇文章 26 订阅
2513 篇文章 2 订阅

2024软件测试面试刷题,这个小程序(永久刷题),靠它快速找到工作了!(刷题APP的天花板)-CSDN博客文章浏览阅读2k次,点赞85次,收藏11次。你知不知道有这么一个软件测试面试的刷题小程序。里面包含了面试常问的软件测试基础题,web自动化测试、app自动化测试、接口测试、性能测试、自动化测试、安全测试及一些常问到的人力资源题目。最主要的是他还收集了像阿里、华为这样的大厂面试真题,还有互动交流板块……https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5501我通常采用python获取数据的方式大概分三类:

一、是使用requests发送请求获取数据,这种方式通常适用于目标数据的接口比较容易模拟的情况。

二、使用selenium 控制浏览器进行网页交互 然后获取数据,这种一般适合网页可见数据的获取,只要不是反爬很严格的网站,用这种方式都可以搞。

三、直接写脚本链接数据库获取数据,这种一般都是内部的一些平台数据需要汇总处理的场景会用到,毕竟外部的数据库不可能轻易链接。

背景:应用的一些数据需要去firebase(简称fb)和google play console(简称gp) 这两个平台去获取,由于这些数据都没有现成的api,所以采用了上述的第二种方式 即使用selenium模拟用户登录的方式去获取数据。近期这俩平台前端页面有了新的更新,gp还好,比较好适配,fb就麻烦了,更新之后发现之前的方式不好使了,导致获取效率大不如从前。本打算放弃了,隔壁老哥给我推荐了这款工具,然后就尝试了一下,确实很行。

DrissionPage大致介绍

是一个基于 python 的网页自动化工具,它既能控制浏览器,也能收发数据包,还能把两者合而为一,可兼顾浏览器自动化的便利性和 requests 的高效率,它的语法简洁而优雅,代码量少,对新手友好。以前的版本是对 selenium 进行重新封装实现的。从 3.0 开始,作者另起炉灶,对底层进行了重新开发,摆脱对 selenium 的依赖,增强了功能,提升了运行效率。(听起来就很厉害的样子)

和selenium对比,亮点如下:

  • 无 webdriver 特征

  • 无需为不同版本的浏览器下载不同的驱动

  • 运行速度更快

  • 可以跨<iframe>查找元素,无需切入切出

  • <iframe>看作普通元素,获取后可直接在其中查找元素,逻辑更清晰

  • 可以同时操作浏览器中的多个标签页,即使标签页为非激活状态,无需切换

  • 可以直接读取浏览器缓存来保存图片,无需用 GUI 点击另存

  • 可以对整个网页截图,包括视口外的部分(90以上版本浏览器支持)

  • 可处理非open状态的 shadow-root

使用文档 如下链接:

https://g1879.gitee.io/drissionpagedocs/

我本次主要用到的功能

一、切换iframe

二、常规的定位标签,获取值

下面是主要的代码逻辑,可供参考

from DrissionPage import ChromiumPage
import time
import json
import requests

firebase_project_info = [
#  这里都是fb的项目信息
  [],
  [],
  []
]
gp_project_info = [
# 这里都是gp的项目信息
    [],
    [],
    [],
]
project_webhook = {
  # 这里都是钉钉的webhook

}



def joint_firebase_url():
    url = ""
     # 省略了拼接目标数据url的逻辑
    return url


def get_firebase_info(url):
    # 这个方法主要是获取fb平台的数据,根据实际项目替换即可,下面只展示部分逻辑
    
    # 打开目标页面
    page.get(url)
    # 加时间等待,这个网站刷新比较慢,一般不需要单独加等待时间
    time.sleep(2)
    # 目标数据在一个iframe里面,需要切换一下
    iframe = page.get_frame('#iframe的id')
    # 官方建议切换换在调用一下这个方法,听官方的
    iframe = page.get_frame(iframe)
    # 这里假设要获取这个页面的平台这个字段的数据,使用xpath定位
    platform_info = iframe.ele('xpath://div/div[2]')
    # 这里假设平台这个值实在标签的属性里面某个key对应的value,且是这个value的某一部分
    platform = platform_info.attr('属性的key').split("-")[1]
    # 这里假设需要获取这个页面的版本这个字段,同样使用xpath先定位
    version_info = iframe.ele('xpath://div//div')
    # 这里假设版本这个字段的值使用上面这个标签包裹的,直接使用.txt获取这个值
    version = version_info.text


def joint_gp_url():
    url =""
    # 省略了拼接目标数据url的逻辑
    return url


def get_gp_info():
    # 这个方法主要是获取gp平台的数据,根据实际项目替换即可


def send_requests(url, data):
    """
    将信息根据不同的项目名称及对应的钉钉webhook发到对应的群
    :param url:
    :param data:
    :return:
    """

    header = {
        "Content-Type": "application/json",
        "Charset": "UTF-8"
    }
    send_data = json.dumps(data)  # 将字典类型数据转化为json格式
    send_data = send_data.encode("utf-8")  # 编码为UTF-8格式
    requests.post(url=url, data=send_data, headers=header)


def send_message(content, project_name):
    message = {
        "msgtype": "actionCard",
        "actionCard": {
            "title": "数据详情",
            "text": content,
            "hideAvatar": "0",
            "btnOrientation": "0",
        }
    }
    try:
        url = project_webhook[project_name]
        send_requests(url, message)
    except Exception as e:
        print(e)
    finally:
       url = ''
       send_requests(url, message)


if __name__ == '__main__':
    project_info_dict = {}
    # 初始化
    page = ChromiumPage()
    fb_url = joint_firebase_url(...)
    get_firebase_info(fb_url,...)
    time.sleep(1)

    gp_url = joint_gp_url()
    get_gp_info(gp_url, ...)
    # 关闭页面
    page.quit()
    time.sleep(3)
    print(project_info_dict)

    

    for project_name in project_info_dict:
        content = ""
        content += "# 项目名称:{}".format(project_name)
        # 省略组装要发送到钉钉的数据的逻辑
        send_message(content, project_name)

总结

本次使用DrissionPage后发现获取数据的时间比之前短了很多,而且这个工具对于需要登陆的网站,只需要在本地登录一次之后,在本地浏览器的登录态失效之前可不进行登录操作,也不需要自己去琢磨保存登录态等操作,比较方便。后续遇到同类型场景不再使用selenium了。

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 786229024,里面有各种测试开发资料和技术可以一起交流哦。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】在这里插入图片描述
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 19
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值