跳到主要内容

electron应用调试

electron简介

教程很细很详细了,操作也很简单,可参考官方开发文档

个人理解来说,electron就是一个把html打包成桌面应用的框架,其内置了一个Chromium可以加载各种网页,以及可以在index.jspreload.js中执行nodejs代码。

因为是基于浏览器的应用,如果要对其进行测试,那么难免会对JS进行调试,因此本文的核心也是:怎么样才能对electron应用的js进行调试呢?

对electron应用调试

控制台

浏览器按F12可以直接打开控制台,在electron应用中,如果开发者没有做限制,也可以按快捷键打开,Windows上是Ctrl + Shift + I,Mac上是 Cmd + Option + I

开源工具

使用GitHub的开源工具debugtron:Debug in-production Electron based app

选择APP后如下:

image-20241103下午85505651

调试主进程

image-20241103下午85556820

调试渲染的页面:

image-20241103下午85407777

使用chrome的inspect

上面开源工具有时候获取的应用不全,手动写路径也启动不了的话,可以试试这个办法;手动开启debug模式然后用chrome://inspect去注入检查

调试主进程

如果要调试main.js,应用启动时增加参数 --inspect=9222

image-20241103下午90355282

然后在chrome中输入 chrome://inspect

image-20241103下午90431371

点击inspect,就可以对主进程下断点调试了

image-20241103下午90516387

调试渲染页面

应用启动时增加参数 --remote-debugging-port=9222

image-20241103下午90109022

然后在chrome中输入 chrome://inspect

image-20241103下午90142942

点击 inspect 即可

image-20241103下午90240384

调试技巧

如何快速定位到功能代码

和正常调试网站上的JS代码一样,之前没有记录过,这里一起总结下;思路主要分为2个方向:

  1. 通过具体的操作和变化下断点
  2. 搜关键词

第2个方法比较简单粗暴,但有时候可能也定位不到,因此这里着重介绍一下第1个方法

在chrome中,除了我们手动下的断点外,还提供了一些特殊的断点,比如发起xhr请求、点击了鼠标、按下了键盘等等,来辅助快速定位到逻辑代码。

image-20241103下午91405364

此外,还可以通过html的变化下断点,操作方式如下:

image-20241103下午91705930

这样当页面对应的html属性发生变化时,就会自动下断点到对应的执行代码中。在通过分析堆栈就可以找到一些上层的封装方法,方便我们测试调用。

image-20241103下午91931261

问答

Q:出现The tab is inactive 无法选中怎么办?

image-20241103下午90658842

A:再次选中应用即可。