问题标签 [spectron]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
40 浏览

javascript - 我可以将webdriver v4测试方法链重写为v5(当前spectron / electron测试)

我使用光谱/电子测试。Spectron 更新更改为 webdriver v5。我有用 v4 方法链编写的 UI 测试。我可以将 webdriver v4 测试方法链重写为 webdriver v5(当前 spectron)吗?

https://github.com/MichinariNukazawa/lina_dicto/blob/master/lina_dicto/test/input_ui.js

我知道需要替换一些方法和元素 id 选择器。查看我的 spectron 问题网址: https ://github.com/electron-userland/spectron/issues/663

0 投票
0 回答
107 浏览

electron - Spectron 不可见的 html 元素

我是 Spectron 的新手,我花了很多时间进行简单的示例测试。我有一个电子应用程序,一开始有加载器,一段时间后它呈现简单的视图。我想检查标题是否等于“欢迎”这是我的测试代码:

结果我得到错误:错误:元素(“h2”)在15000毫秒后仍然不可见我做错了什么?我花了几个小时寻找其他 Spectron 方法来实现我的目标,我尝试采用许多解决方案但没有结果。

0 投票
1 回答
709 浏览

node.js - 未知错误:Chrome 无法启动:尝试使用 mocha 测试电子光谱仪时异常退出

我正在尝试测试电子光谱测试。我的项目非常简单,只需克隆一个电子快速启动 repo,然后将代码写入 spec.js,就像从electron-userland/spectron的自述文件中写入的那样

但是当我运行 npm test 时,我遇到了这个错误:

以前我试图重新安装 mocha 和 spectron,但它返回相同的结果。
我的开发依赖项:

我的操作系统信息:

我正在使用 nodejs v12.18.4

你可以在这里克隆我的电子测试项目:电子示例

0 投票
0 回答
293 浏览

javascript - Spectron:app.client.click 不是函数

我正在使用 Spectron 测试一个简单的电子应用程序。以下是我的 test.js 有一个测试用例来单击一个元素。

当我运行 mocha 以下是输出。

我是摩卡测试的新手,我无法找到解决方案。提前致谢。

0 投票
1 回答
214 浏览

javascript - 无法遍历多个选择器($$,findElements)webdriver.io

我正在尝试将 webdriver.io ( https://webdriver.io/ ) 与 spectron 一起用于电子应用程序。

我能够访问 findElement 或 $ 包含的函数。例如,我可以在这个 findElement ($) 选择器上使用 .click()。

app.client.$('//button[@data-value, "Agree")]').click()

我的应用程序包含 4 个按钮,它们的数据值属性为同意。这个 $ 选择器只会点击第一个。我的目标是遍历所有“同意”按钮并单击所有按钮。

我正在尝试这样做:

app.client.$$('//button[@data-value, "Agree")]').forEach(button => button.click())

但是,这就是说 forEach 函数不存在,就像 app.client.$$ 不返回数组一样,这与本文档所说的相反:https://webdriver.io/docs/api/browser/$$。 html

如果我尝试解决 $$ 返回的承诺,请执行以下操作:

app.client.$$('//button[@data-value, "Agree")]').then(buttons => console.log(buttons))

我得到了 4 个按钮的数组,但只出现了 ELEMENT 标识符、索引和元素对象 ID。它们不包括扩展原型以在它们上运行诸如 .click() 之类的命令。我也找不到使用 webdriver 查询特定 ELEMENT ID 的任何方法。

0 投票
1 回答
65 浏览

javascript - 有没有办法从 mocha 框架中的描述块中重用特定的测试用例(它块)(使用 javascript)

我对 mocha 框架相当陌生,我想知道我们是否可以重用来自特定描述块的测试用例。

0 投票
1 回答
596 浏览

memory-leaks - 使用 mocha 运行测试会导致内存泄漏和大型字符串结构

我正在尝试建立一个环境来检测我的应用程序中的内存泄漏

应用程序设置:Angular + Electron
模拟应用程序使用:Mocha + Spectron + Webdriverio

我对我在新设置的应用程序上运行的不同用户场景进行了测试,并定期收集每个进程的内存使用情况。

当应用程序处于空闲状态时,内存使用情况符合预期。但是我遇到了其他测试用例的问题。似乎在使用 mocha 运行测试时,我在内存中得到了意想不到的未知结构。这会导致内存泄漏。


我在下面附上了一个截图(开发工具上的内存选项卡),它最能描述我的困惑。

  • 快照 1:在设置应用程序后拍摄 ( 81.8 MB )
  • 快照 2:在完成一组测试(正常使用约 10 分钟)并且应用程序已返回启动状态后拍摄(109 MB
  • 快照 3:在我强制 GC 后拍摄(通过“收集垃圾”按钮)(108 MB

比较快照 1 和 2,我可以看到大部分内存在哪里(~19 MB):在字符串中。

检查保持器告诉我这些字符串链接到(全局处理程序)>(GC 根),选择其中一个字符串并$0在控制台中执行会导致所有字符串的输出相同:<body>...</body>. 当我将元素悬停时,它会链接到我的应用程序主体(对于每个字符串)。

“扩展字符串结构”给我一种感觉,这是由于某些模块被多次加载并且它的引用从未被破坏(我的猜测是通过Module()in加载internal/modules/cjs/loader.js:136)引起的?

扩展字符串结构

当使用“分配时间线”检查内存时,我没有在未释放的内存下找到这个“大字符串对象”,因为相同的操作会导致在“堆快照>比较”下产生新的“大字符串对象”

当我手动模拟测试场景或通过控制台中的函数模拟点击时,没有内存泄漏。

所有这一切都让我想,我做错了或使用了错误的东西(关于摩卡咖啡)。


我的问题:

  1. mocha 是否不适合这种设置(即在应用程序关闭之前它会保留一些引用)?
  2. 如果一个结构只被(全局处理程序)>(GC根)保留,它什么时候会被释放?我在这里读到,它们不是您需要担心的事情,但就我而言,它们是:/
  3. 怎么会有多个字符串(多个引用?),当调用 via 时$0,都引用相同的 DOM 元素(<body>)?
  4. 为什么这个字符串对象在“分配时间线”中不可见?
  5. 这种类型的内存泄漏可能是什么原因?
0 投票
0 回答
113 浏览

testing - Mocha,Electron:测试中的错误

我正在用 mocha 测试我的电子应用程序并多次出现此错误(我仍然得到它!)。每次我运行程序时它都会返回错误

以防万一这很重要,所说的部分(The process started from chrome location \node_modules...实际上有整个路径,而不仅仅是那个。

在我的 test.js 文件中,我有来自 spectron 主页的代码,您可以在此处查看。测试文件有什么问题?

0 投票
0 回答
65 浏览

node.js - 如何使用 Spectron 执行 getPath?

在我的 Electron 应用程序中,我remote.app.getPath('documents'用来获取用户当前文档目录的路径。我也使用 Spectron 并且想在我的测试中访问这个目录。

在我的 Spectron 测试中执行此功能的最佳方法是什么?

不幸remote.app的是未定义,因此不可用,而且Application它本身也没有任何功能。

0 投票
3 回答
654 浏览

node.js - 使用 ava 时 NODE_MODULE_VERSION 不正确

我编写了一个使用nodegit的 Electron 应用程序。对于我的测试部分,我将ava与 Spectron 结合使用来测试我的应用程序。我的所有测试都有效 - 包括在我的应用程序中使用nodegit的函数。

除了上面描述的测试之外,我还制作了一个纯非电子测试文件,我在其中直接导入了 nodegit。

现在通过ava执行这个测试会返回:

版本 82 究竟来自哪里?我只安装了nodejs 14.15.0,它使用83了预期的版本。为什么节点认为该版本在我的应用程序中实际运行时不匹配?这就是我的package.json样子:

我建立nodegit了自己,在config.gypi文件中它甚至提到了:

我做了一个超级简单的可重现示例:https ://github.com/Githubber2021/node_module_version-issue

如果这是一个错误或版本 82 来自哪里,谁能解释我?