后来 我不再使用selenium了

这篇具有很好参考价值的文章主要介绍了后来 我不再使用selenium了。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

后来 我不再使用selenium了,程序员,程序人生,软件测试,selenium,测试工具,面试,单元测试,功能测试,python,软件测试

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%免费】后来 我不再使用selenium了,程序员,程序人生,软件测试,selenium,测试工具,面试,单元测试,功能测试,python,软件测试
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。后来 我不再使用selenium了,程序员,程序人生,软件测试,selenium,测试工具,面试,单元测试,功能测试,python,软件测试
后来 我不再使用selenium了,程序员,程序人生,软件测试,selenium,测试工具,面试,单元测试,功能测试,python,软件测试

后来 我不再使用selenium了,程序员,程序人生,软件测试,selenium,测试工具,面试,单元测试,功能测试,python,软件测试

后来 我不再使用selenium了,程序员,程序人生,软件测试,selenium,测试工具,面试,单元测试,功能测试,python,软件测试文章来源地址https://www.toymoban.com/news/detail-785922.html

到了这里,关于后来 我不再使用selenium了的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python爬虫selenium页面滑动案例,作为一个Python程序员你还不会JetPack

    def up_page(self): time.sleep(1) self.driver.find_element(By.XPATH,‘//*[text()=“下一页”]’).click() def save_page(self, n=1): time.sleep(2) with open(f’第{n}页.html’, ‘w’, encoding=‘utf-8’) as f: f.write(self.driver.page_source) def run(self): try: self.save_page() # 第一页 for n in range(2, 6): # 第二三四五页 self.scroll() s

    2024年04月22日
    浏览(50)
  • 程序员都喜欢怎么使用爬虫?

    作为计算机行业的从业人员,程序员常常需要使用各种工具来辅助其工作。其中,爬虫广泛应用于数据收集和采集任务,因此程序员通常喜欢使用爬虫作为快速数据获取工具。本文将讨论程序员为何喜欢使用爬虫、在哪些情况下使用爬虫以及如何使用爬虫进行数据采集。 为什

    2024年02月05日
    浏览(45)
  • OpenAI ChatGPT 使用示例(程序员)

    作为一个程序员,当知道ChatGPT出来之后或者GPT3出来的时候,我是有喜有忧,喜的是它可以帮我写代码,重构代码,写注释,写测试,,。哇,听起来好刺激,我可以从此以后不用绞尽脑汁写测试类了,不用每天为追逐80%的测试覆盖率而烦恼了,不用为写一些POC代码疯狂的谷

    2024年02月09日
    浏览(46)
  • 程序员如何使用chatgpt提高工作效率

    公众号对话chatgpt 网页在线对话 ● 拥有一个 OpenAI 账号(需要梯子)。 ● 账号申请访问地址:https://platform.openai.com/。 ● ChatGPT 对话地址:https://chat.openai.com/chat。 API接入 ● 需要一个 API key(依赖于 OpenAI 账号)。 ● 普通的 HTTP 请求即可接入,参考文档:https://platform.opena

    2024年02月08日
    浏览(63)
  • 程序员必备:GitHub访问神器FastGithub使用介绍

    GitHub作为程序员访问最频繁的网站,程序员们经常需要访问Github找开源项目、学习新框架、管理自己的个人开源项目等等。因为GitHub属于国外的网站,直接访问的话,速度非常慢,甚至访问不了,今天给大家推荐FastGitHub这款开源项目可以很好的解决国内程序员访问GitHub的困扰

    2024年02月05日
    浏览(73)
  • 程序员推荐!JetBrains IDEs使用技巧与必备插件

    JetBrains是耳熟能详的软件开发工具提供商,旗下的IDE集成开发环境被广泛应用于不同的开发领域。本文将向新手介绍JetBrains IDEs的基本知识和常用功能。 什么是JetBrains IDEs? JetBrains IDEs是一套面向软件开发的集成开发环境,可以为Java、Python、PHP、C#、Ruby等多种编程语言提供全

    2024年02月11日
    浏览(44)
  • Java初级程序员与ChatGPT(文心一言)使用感受

            随着23年三月初开始ChatGPT迅速发展,爆红网络。也有不少人说这个东西会顶替程序员。刚好身边同事有一个需要是读取word文档中的内容,保存到数据库。         我们就用百度的文心一言试下吧。             总的来说从提问到问题的反馈,都是比较流畅的。代

    2023年04月26日
    浏览(50)
  • 【ChatGPT】程序员的半个老师,今天简单讲讲使用心得

    程序员有个玩笑叫做复制黏贴,原来的百度谷歌只能是碎片层面,有了chatGPT,可以实现更深层次的复制黏贴,直接帮你写好整个方法和实现步骤,不再是简单的碎片。 当然他只能做到教材级的解答,业务层面做不到,如果连业务层面都做到了,那程序员就真失业了!! 程序

    2023年04月20日
    浏览(51)
  • 详解--Postman基本使用方法+接口关联+[Python,如何成为杰出的程序员

    安装方法:双击exe文件可以完成安装,简称傻瓜式安装,这里并是说各位,而是指安装方式很简单,直接下一步下一步就好。 进来之后就是这样的了, 这里暂做简介,后续我们也会慢慢讲到其他的功能点。 工具使用 ==== 步骤: 1、复制链接,百度搜索天气,这里只是建议哈

    2024年04月10日
    浏览(51)
  • iTab插件谷歌浏览器安装、使用(程序员、开发、设计、摸鱼神器)

     iTab,一个 标签页美化插件 ,安装之后,可以取代浏览器默认的标签页,效果如下。 iTab 最大的特色在于,加入了 iOS 上的小组件的设计,让它在众多标签页美化插件中显得与众不同,而且拖动小组件可以重新调整小组件的位置。集成了各种各样的应用和链接,直接点击就可

    2024年02月04日
    浏览(72)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包