使用playright自动下载vscode已安装插件

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

import os
import re
import subprocess
import traceback
from playwright.sync_api import Playwright, sync_playwright, expect


# 执行CMD命令
cmd_command = "code --list-extensions"  # 获取已安装扩展列表
process = subprocess.Popen(cmd_command, stdout=subprocess.PIPE, shell=True)

# 获取命令结果
output, error = process.communicate()

pluginList = []
# 输出结果
if error:
    print(f"错误: {error}")
    raise Exception(error)
else:
    res = output.decode('utf-8')
    pluginList = res.split('\n')
    print(f"命令输出: \n{res}")

# pluginList = [
#     '766b.go-outliner',
# 'aaron-bond.better-comments',
# 'achil.vscode-javascript-repl',
# 'aksharpatel47.vscode-flutter-helper',
# 'albymor.increment-selection',
# 'alefragnani.project-manager',
# 'alexisvt.flutter-snippets',
# 'Angular.ng-template',
# 'AykutSarac.jsoncrack-vscode',
# 'batisteo.vscode-django',
# 'bierner.color-info',
# 'BriteSnow.vscode-toggle-quotes',
# 'ChakrounAnas.turbo-console-log',
# 'changkaiyan.tf2snippets',
# 'checkmarx.ast-results',
# 'christian-kohler.npm-intellisense',
# 'christian-kohler.path-intellisense',
# 'chrmarti.regex',
# 'cipchk.zh-hans-tt-hant-vscode',
# 'circlecodesolution.ccs-flutter-color',
# 'codezombiech.gitignore',
# 'cssho.vscode-svgviewer',
# 'csstools.postcss',
# 'Dart-Code.dart-code',
# 'Dart-Code.flutter',
# 'dbaeumer.vscode-eslint',
# 'devzstudio.emoji-snippets',
# 'docsmsft.docs-markdown',
# 'docsmsft.docs-yaml',
# 'donjayamanne.git-extension-pack',
# 'donjayamanne.githistory',
# 'donjayamanne.python-environment-manager',
# 'donjayamanne.python-extension-pack',
# 'DotJoshJohnson.xml',
# 'eamodio.gitlens',
# 'ecmel.vscode-html-css',
# 'EditorConfig.EditorConfig',
# 'esbenp.prettier-vscode',
# 'felipecaputo.git-project-manager',
# 'FelixAngelov.bloc',
# 'firefox-devtools.vscode-firefox-debug',
# 'flesler.url-encode',
# 'folke.vscode-monorepo-workspace',
# 'formulahendry.auto-close-tag',
# 'formulahendry.auto-rename-tag',
# 'formulahendry.code-runner',
# 'fwcd.kotlin',
# 'gamunu.vscode-yarn',
# 'gaoliang.visual-zookeeper',
# 'GitHub.remotehub',
# 'golang.go',
# 'HarryHopkinson.vs-code-runner',
# 'hediet.debug-visualizer',
# 'helixquar.randomeverything',
# 'hollowtree.vue-snippets',
# 'huangjianke.fish-redux-template',
# 'humao.rest-client',
# 'ivangabriele.vscode-git-add-and-commit',
# 'IWANABETHATGUY.vue-this-store',
# 'JFrog.jfrog-vscode-extension',
# 'johnpapa.angular-essentials',
# 'johnpapa.Angular2',
# 'johnpapa.vscode-peacock',
# 'johnpapa.winteriscoming',
# 'KevinRose.vsc-python-indent',
# 'Kimseungtae.aicodehelper',
# 'lihui.vs-color-picker',
# 'magicstack.MagicPython',
# 'marlon407.code-groovy',
# 'mathiasfrohlich.Kotlin',
# 'MellowMarshmallow.groovy',
# 'mhutchie.git-graph',
# 'mindaro-dev.file-downloader',
# 'mindaro.mindaro',
# 'ms-azuretools.vscode-docker',
# 'MS-CEINTL.vscode-language-pack-zh-hans',
# 'ms-edgedevtools.vscode-edge-devtools',
# 'ms-kubernetes-tools.vscode-kubernetes-tools',
# 'ms-mssql.data-workspace-vscode',
# 'ms-mssql.mssql',
# 'ms-mssql.sql-bindings-vscode',
# 'ms-mssql.sql-database-projects-vscode',
# 'ms-ossdata.vscode-postgresql',
# 'ms-playwright.playwright',
# 'ms-python.autopep8',
# 'ms-python.black-formatter',
# 'ms-python.flake8',
# 'ms-python.isort',
# 'ms-python.pylint',
# 'ms-python.python',
# 'ms-python.vscode-pylance',
# 'ms-toolsai.jupyter',
# 'ms-toolsai.jupyter-keymap',
# 'ms-toolsai.jupyter-renderers',
# 'ms-toolsai.vscode-jupyter-cell-tags',
# 'ms-toolsai.vscode-jupyter-slideshow',
# 'ms-vscode-remote.remote-containers',
# 'ms-vscode-remote.remote-ssh',
# 'ms-vscode-remote.remote-ssh-edit',
# 'ms-vscode-remote.remote-wsl',
# 'ms-vscode-remote.vscode-remote-extensionpack',
# 'ms-vscode.azure-account',
# 'ms-vscode.azure-repos',
# 'ms-vscode.cmake-tools',
# 'ms-vscode.cpptools-extension-pack',
# 'ms-vscode.cpptools-themes',
# 'ms-vscode.hexeditor',
# 'ms-vscode.live-server',
# 'ms-vscode.powershell',
# 'ms-vscode.remote-explorer',
# 'ms-vscode.remote-repositories',
# 'ms-vscode.remote-server',
# 'ms-vscode.wordcount',
# 'msyrus.go-doc',
# 'Nash.awesome-flutter-snippets',
# 'Natizyskunk.sftp',
# 'NicolasVuillamy.vscode-groovy-lint',
# 'njpwerner.autodocstring',
# 'overtrue.miniapp-helper',
# 'PKief.material-icon-theme',
# 'Postman.postman-for-vscode',
# 'redhat.java',
# 'redhat.vscode-commons',
# 'redhat.vscode-yaml',
# 'ritwickdey.LiveServer',
# 'rogalmic.bash-debug',
# 'sdras.vue-vscode-snippets',
# 'tauri-apps.tauri-vscode',
# 'techer.open-in-browser',
# 'thekalinga.bootstrap4-vscode',
# 'twxs.cmake',
# 'vadimcn.vscode-lldb',
# 'vahidk.tensorflow-snippets',
# 'vformAdmin.vform-maker',
# 'VisualStudioExptTeam.intellicode-api-usage-examples',
# 'VisualStudioExptTeam.vscodeintellicode',
# 'VisualStudioExptTeam.vscodeintellicode-completions',
# 'vmware.vscode-boot-dev-pack',
# 'vmware.vscode-spring-boot',
# 'vscjava.vscode-gradle',
# 'vscjava.vscode-java-debug',
# 'vscjava.vscode-java-dependency',
# 'vscjava.vscode-java-pack',
# 'vscjava.vscode-java-test',
# 'vscjava.vscode-maven',
# 'vscjava.vscode-spring-boot-dashboard',
# 'vscjava.vscode-spring-initializr',
# 'Vue.volar',
# 'Vue.vscode-typescript-vue-plugin',
# 'waderyan.gitblame',
# 'WallabyJs.console-ninja',
# 'wellchang.fishreduxhelper',
# 'wellchang.fonttodartts',
# 'wholroyd.jinja',
# 'wowbox.code-debuger',
# 'Wscats.eno',
# 'xabikos.JavaScriptSnippets',
# 'yzane.markdown-pdf',
# 'yzhang.markdown-all-in-one',
# 'Zignd.html-css-class-completion',
# 'ziyasal.vscode-open-in-github']

# 判断是否已下载
def isExsit(prefix):
    # 指定目录
    directory = os.getcwd()

    # 正则表达式匹配文件名
    pattern = prefix + '-.*\.vsix$'  # 这将匹配所有.vsix文件

    # 遍历目录
    for filename in os.listdir(directory):
        # 如果文件名匹配正则表达式
        if re.match(pattern, filename):
            # 拼接完整的文件路径
            file_path = os.path.join(directory, filename)
            # 如果文件存在
            if os.path.exists(file_path):
                # print(f'文件 {file_path} 存在')
                return True
            else:
                # print(f'文件 {file_path} 不存在')
                return False

def run(playwright: Playwright) -> None:
    browser = playwright.chromium.launch(headless=False, timeout=1200 * 1000.0)
    # 设置页面查找元素的超时时间为 5 秒
    browser.locator_timeout = 5000
    context = browser.new_context()
    context.set_default_timeout(5000)
    page = context.new_page()
    page.set_default_timeout(5000)
    failList = []
    for plugin in pluginList:
        try:
            # 判断文件是否存在
            if not isExsit(plugin):
                # print(plugin + ".vsix文件存在")
            # else:
                page.goto("https://marketplace.visualstudio.com/search?term="+plugin+"&target=VSCode&category=All%20categories&sortBy=Relevance", wait_until='commit')
                page.wait_for_timeout(300)
                first = page.locator('xpath=/html/body/div[2]/div[3]/div[3]/div/div/div[2]/div[2]/div[2]/div/div/div/div/a/div')
                first.click()
                # page.goto("https://marketplace.visualstudio.com/items?itemName=" + plugin, wait_until='commit')
                page.wait_for_timeout(300)
                ele = page.get_by_role("button", name="Version History")
                ele.click()
                page.wait_for_timeout(300)
                ele.click()
                page.wait_for_timeout(1000)
                version = page.locator("#version-history-tab-content div table tbody tr").nth(0).locator('td').nth(0).inner_text()
                page.wait_for_timeout(300)
                with page.expect_download() as download_info:
                    # page.locator("xpath=/html/body/div[4]/div/div/div[2]/div/div/div[2]/div/div/div/div[2]/div[2]/div[2]/div/div[2]/table/tbody/tr[1]/td[3]/a").click()
                    page.locator("#version-history-tab-content div table tbody tr").nth(0).locator('a').nth(0).click()
                download = download_info.value
                # Wait for the download process to complete
                print(download.path())
                # Save downloaded file somewhere
                download.save_as(plugin + "-" + version + ".vsix")
                # break
        except Exception as e:
            failList.append(plugin)
            print(plugin + ".vsix下载失败")
            print(e)
            # traceback.print_exc()
    # ---------------------
    context.close()
    browser.close()
    print('下载失败扩展列表:')
    print(failList)

with sync_playwright() as playwright:
    run(playwright)

文章来源地址https://www.toymoban.com/news/detail-702512.html

到了这里,关于使用playright自动下载vscode已安装插件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 如何在vscode导入下载的插件安装包

    点击vscode插件 -- 点击3个点 -- 选择从VSIX安装 点击更新报 Cannot update while running on a read-only volume. The application is on a read-only volume. Please move the application and try again. If you’re on macOS Sierra or later, you’ll need to move the application out of the Downloads directory. This might mean the application was put o

    2024年02月11日
    浏览(67)
  • 如何使用Selenium IDE浏览器插件轻松完成脚本录制,轻松搞定自动化测试!

    Selenium IDE可以用来调式Selenium脚本,支持将浏览器的Web网页操作导出为不同编程语言的脚本。 创建项目之后可以录制或回放已录制的网页操作情况,特别是对一些开发测试人员提供了相当大的便利。 目前,该Selenium IDE插件可以支持Edge/火狐以及谷歌浏览器的使用,其他浏览器

    2024年02月02日
    浏览(57)
  • python3ide手机安卓版下载,python手机下载安装教程

    本篇文章给大家谈谈如何在手机上下载python 3.7版本,以及python3ide手机安卓版下载,希望对各位有所帮助,不要忘了收藏本站喔。 大家好,给大家分享一下python3ide安卓版官网下载,很多人还不知道这一点。下面详细解释一下python画樱花树。现在让我们来看看! 在学习python的

    2024年01月20日
    浏览(118)
  • vscode怎么安装python插件包,vscode怎么安装python插件

    大家好,小编来为大家解答以下问题,visual studio code怎么安装python插件,如何安装vscode并配置python环境,现在让我们一起来看看吧! 一、VS Code下载与安装 1.下载方法 登录VScode的官网下载,官网链接 Visual Studio Code - Code Editing. Redefined 【----帮助Python学习,以下所有学习资料文

    2024年01月18日
    浏览(31)
  • 官网下载IDE插件并导入IDE

    地址:https://plugins.jetbrains.com/plugin/21068-codearts-snap/versions 说明:本次演示以IDEA软件为例 操作: 等待下载完成 点击File-setting-Plugins 导入插件 找到刚刚下载的插件选择导入 导入成功 IDE软件不对应就会出现下列错误,等待后续插件更新再使用或者,降低IDE版本

    2024年04月15日
    浏览(45)
  • 入门人工智能 —— 学习 python 使用 IDE :vscode 完成编程 (2)

    在上一篇文章中,介绍了如何入门人工智能编程,并开始了学习 Python 编程语言的基础知识。本文是系列文章的第二部分,我们将继续探讨 Python 编程,但这次我们将使用 Visual Studio Code(简称 VSCode)作为我们的集成开发环境(IDE)。VSCode 是一个功能强大的文本编辑器,它可以

    2024年02月09日
    浏览(63)
  • 【工具】Github统计代码行数工具推荐(VScode插件、兼容任何平台、不用下载安装包)

    需求: 1)被要求统计代码行数; 2)不想打开Linux,懒得下载Windows版本GitStats; 3)打开了Linux但也不记得find命令行怎么用; 4)打开了Linux,装好了Gitstats但自己没有图形化界面所以无法打开其输出结果; 5)习惯用VScode编程。 其他工具: 1)Linux愿意使用Gitstats的请直接转到

    2024年02月05日
    浏览(54)
  • Java之IDE开发工具eclipse下载安装使用详细教程

    熟练eclipse的使用 Eclipse是一个IDE(集成开发环境),集成了代码编写功能,分析功能,编译功能,调试功能等一体化的开发软件。 免费 Java语言编写 免安装 扩展性强 下载和安装 下载地址:http://eclipse.org 绿色版 解压就可以使用(Eclipse) 版本代号 平台版本 需要的JDK最低版本 Gal

    2024年04月14日
    浏览(104)
  • Python自动化测试 环境搭建 Selenium、WebDriver下载、安装、配置、基本使用详解

    基本于Python语言 和 Selenium框架,使用PyCharm 开发环境,详细介绍自动化测试环境的搭建 以及 基本的使用方法。 Python环境目前已被大部分主流操作系统所支持,比如在Linux、Mac、Unix等系统上就自带了Python环境,但在Windows系统上目前还需要自己安装,(当然如已经安装过了的话

    2024年02月03日
    浏览(71)
  • VScode自动格式化代码(tab缩进、符号空格)配置beautify插件使用

    安装插件 在插件库搜索beautify,会弹出很多插件 你需要根据你自己的语言选择对应的插件安装,尽量选择在维护中的插件 我是做前端的,所以选择的是beautify blade,格式化语言:javascript, JSON, CSS, Sass, and HTML ![在这里插入图片描述](https://img-blog.csdnimg.cn/cc42b7d4f0b549a78d16c69e7d33

    2024年02月12日
    浏览(55)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包