ETJava Beta | Java    注册   登录
  • 搜索:
  • 【Playwright + Python】系列(九)Playwright 调用 Chrome 插件,小白也能事半功倍

    发表于      阅读(1)     博客类别:Crawler     转自:https://www.cnblogs.com/longronglang/p/18540595
    如有侵权 请联系我们删除  (页面底部联系我们)  

    哈喽,大家好,我是六哥!今天我来给大家分享一下如何使用playwight调用chrome插件,面向对象为功能测试及零基础小白,我尽量用大白话的方式举例讲解,力求所有人都能看懂,建议大家先收藏,以免后面找不到。

    什么是chrome插件?

    就是辅助你工作生活的助手,会让你事半功倍,举个例子,下图就是一个插件:

    实战举栗

    通过playwright启动chrome浏览器(有界面、带代理和指定扩展,操作慢),访问百度页面并等待插件加载,最后关闭浏览器。

    代码详解

    代码开头:关键引入与代理设置

    from time import sleep
    from playwright.sync_api import sync_playwright
    proxy = {'server': '代理IP'}
    

    from time import sleep,这个sleep函数可有用啦。咱都知道测试的时候,有时候得等网页加载啥的,用sleep就能让程序暂停一会儿。比如说,你觉得某个操作后需要等 5 秒确保页面稳定,就可以用sleep(5)

    from playwright.sync_api import sync_playwright,这里的playwright是个强大的自动化测试工具,sync_playwright是启动它的关键。

    再看proxy,这是代理设置。如果测试环境需要通过代理访问网络,就得设置这个。要是填错了,测试就可能出问题,就像你走错路了一样。

    主函数:程序的入口

    def test_Ext():
        with sync_playwright() as p:
    

    这里def test_Ext():定义了我们的测试函数。with sync_playwright() as p呢,p就像是我们操作浏览器的手柄。

            # 设置代理并启动带有扩展程序的浏览器
            extension_path = 'dist'  # 替换为你的扩展程序路径
            browser = p.chromium.launch(
                channel='chrome',
                headless=False,
                proxy=proxy,
                args=[f'--disable-extensions-except={extension_path}', f'--load-extension={extension_path}'],
                slow_mo=3000
            )
    

    extension_path = 'dist',这里要换成你实际的扩展程序路径,如果没有就先不管。扩展程序能增强浏览器功能,比如有扩展能方便地获取页面信息。

    browser = p.chromium.launch(...)里,channel='chrome'指定用chrome浏览器。headless=False表示浏览器有界面,这样我们能看到操作过程。proxy=proxy就是用前面设置的代理。args里的--disable - extensions - except={extension_path}只启用指定扩展,--load - extension={extension_path}加载它。slow_mo=3000让操作慢一点,每步停 3 秒,方便我们观察。

            # 创建一个新的上下文
            context = browser.new_context()
    

    创建新上下文,这就好比给测试准备一个独立的环境,和其他测试环境互不干扰。

            # 创建一个新的页面
            page = context.new_page()
    

    创建新页面,就像在浏览器里新开一个标签页。

            # 访问第一个网页并处理弹出对话框
            page.goto("https://www.baidu.com")
            sleep(20)
    

    page.goto("https://www.baidu.com")让页面访问百度。sleep(20)是因为百度页面内容多,等 20 秒确保完全加载。要是有弹出框,playwright一般能自动处理。

            # 关闭浏览器
            browser.close()
    

    测试完了,得关闭浏览器,释放资源,不然会占用电脑性能。

    可能遇到的问题

    要是有问题,像代理不对或者扩展路径错了,就会报错。咱得根据报错信息排查,多试几次熟悉流程,以后复杂的自动化测试代码咱也能轻松搞定。

    效果

    写在最后

    到此,关于使用调用 Chrome 插件方法已分享完毕,感兴趣的同学可以自行动手尝试。 如需要全部源代码,公众号回复“playwight案例”获取,无引号。希望大家都能顺利掌握,一起进步。也欢迎分享给更多有需要的朋友哦!