chrome插件自动重打包

chrome插件重打包目前发现两种方案,一种是用selenium模拟鼠标操作重打包,一种是使用chrome运行参数重打包

方法一、使用chrome.exe重打包

进入chrome目录下,一般在C:\Program Files\Google\Chrome\Application目录下,使用以下命令重打包

chrome.exe --pack-extension=C:\extension --pack-extension-key=C:\extension.pem
  • --pack-extension=插件文件夹路径,打包以后的crx会放在插件文件夹路径同级目录下
  • --pack-extension-key=插件密钥路径,可以为空,会自动在插件文件夹路径同级目录下生成一个密钥

方法二、使用selenium对chrome插件进行自动重打包

chrome插件的拓展程序页使用Shadow DOM(影子DOM)和Shadow Root(影子根)
无法用常规selenium手段获取页面dom元素进行操作,因此使用execute_script的形式执行js操作元素
使用time.sleep(3)目的是为了方便调试时看清操作,实际使用可以酌情删除

import time
from selenium import webdriver

def main():
    driver = webdriver.Chrome()

    try:
        driver.get("chrome://extensions/")
        driver.implicitly_wait(10)
        time.sleep(3)
        # 执行 JavaScript 代码来获取 shadow DOM 中的内容
        # 开启开发者模式
        driver.execute_script('''
            var toggle = document.querySelector('extensions-manager').shadowRoot
                         .querySelector('extensions-toolbar').shadowRoot
                         .querySelector('cr-toolbar').querySelector('cr-toggle');
            toggle.click();
            
        ''')
        time.sleep(3)
        # 点击打包按钮
        driver.execute_script('''
            var button = document.querySelector('extensions-manager').shadowRoot
                         .querySelector('extensions-toolbar').shadowRoot
                         .querySelector('cr-button[id="packExtensions"]');
            button.click();
        ''')
        time.sleep(3)

        dialog_code = '''
            var dialog = document.querySelector('extensions-manager').shadowRoot
                 .querySelector('extensions-toolbar').shadowRoot
                 .querySelector('extensions-pack-dialog').shadowRoot
                 .querySelector('cr-dialog').shadowRoot;
        '''

        # 输入路径
        path = r"此处是插件路径"
        driver.execute_script(f'''
            {dialog_code}

            var body = dialog.querySelector('slot[name="body"]').assignedElements()[0];
            var crInput = body.querySelector('cr-input#rootDir').shadowRoot;
            var input = crInput.querySelector('input#input')
            
            input.value = arguments[0];
            input.dispatchEvent(new Event('input', {{ bubbles: true }}));
        ''', path)
        time.sleep(3)

        # 点击打包按钮
        driver.execute_script(f'''
            {dialog_code}
                         
            var container = dialog.querySelector('slot[name="button-container"]').assignedElements()[0];
            var action = container.querySelector('cr-button.action-button').shadowRoot;
            var button = action.querySelector('#content');
            button.click();
        ''')

        time.sleep(3)
    except Exception as e:
        print(f"Error getting: {e}")
        driver.save_screenshot("screenshot/error.png")
    finally:
        driver.quit()


if __name__ == '__main__':
    main()

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Chrome插件开发教程是一种用于指导开发者创建适用于Google Chrome浏览器的扩展程序的教学文档。 首先,了解Chrome插件的基础知识是很要的。你可以通过查阅官方文档或者在线教程来了解插件的工作原理、基本结构以及开发所需的技术要求等等。这些知识包括HTML、CSS和JavaScript等前端技术,以及Chrome API的使用方法。 其次,确定你的插件要解决的问题或提供的功能。这有助于你规划插件的功能和界面设计。你可以考虑为用户提供的增强功能,如自定义页面样式、自动化任务、快捷方式等等。 开始编写代码之前,你需要创建插件的文件结构。通常情况下,插件需要一个manifest.json文件来描述插件的各种属性和行为,一个或多个HTML页面用于用户界面展示,以及一些可能需要的JavaScript、CSS或其他资源文件。 在代码编写过程中,可以使用Chrome开发者工具进行调试和测试。这个工具可以帮助你快速识别和修复bug,并提供了许多有用的功能,如代码检查、网络请求监控和元素DOM检查等。 完成开发后,你可以将插件打包为.crx文件。这个文件可以直接在Chrome浏览器中安装和使用。你可以选择将插件发布到Chrome网上应用商店,或者直接分享给其他人使用。 总结起来,Chrome插件开发教程主要包括了基础知识学习、功能设计、代码编写和调试、打包和发布等步骤。通过理解这些步骤,你可以开始开发自己的Chrome插件,并为用户带来更好的浏览体验和功能拓展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coder-movers

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值