问题标签 [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 回答
1218 浏览

electron - 在 Spectron 的 new Application() 中如何访问 webdriver 和 chromedriver 选项?

当我启动一个新的 Spectron 应用程序(针对每个测试套件)时,我想修复应用程序的大小(为了所有机器和重新加载的一致性)。

命令喜欢setBounds并且maximise确实会更改尺寸,但它们仅在应用程序启动后才会这样做(这意味着某些组件已经采用了某些尺寸,然后会更改测试结果)。

Spectron 文档中提供了各种启动选项。我已经厌倦了使用 webdriver 和 chromedriver 选项,但它们似乎不起作用。这是一个例子:

我只是假设 webdriver 选项来自browserwindow 类。在 Spectron 中如何访问 webdriver 和 chromedriver 选项?

0 投票
1 回答
507 浏览

testing - Spectron、mocha 和 chai 可以断言变量在电子应用程序中具有预期值吗?

我们如何断言嵌入在 HTML 中的 javascript 变量在使用电子构建的应用程序中具有某些预期值?当前的测试框架是 spectron、mocha、chai、chai.should() 和 chai.use(chaiAsPromised)。

我想断言全局变量foo具有值'foo'。当我尝试时,foo.should.equal('foo')我得到ReferenceError: foo is not defined at Context.<anonymous> (test\spec.js:63:28)

下面是重新设计的 spec.js。

0 投票
1 回答
836 浏览

electron - Spectron 推出 10 个窗口;在 10 次尝试后挂起并失败,客户端初始化失败

电子 v1.8.2 光谱 v3.8.0

添加 spectron 测试,但即使是非常基本的测试也会失败。

尝试运行:

非常快速地启动我的应用程序的 10 个实例并失败并显示以下消息:

尝试 10 次后客户端初始化失败

我尝试使用 spectron 3.7.3 降级到电子 1.7.9,结果相同。

奇怪的是,将 connectionRetryTimeout 设置为 3000000 没有任何作用。所有应用程序实例立即一个接一个地启动。

0 投票
2 回答
2647 浏览

e2e-testing - 让 WebdriverIO 等待特定组件重新加载

我正在使用 Spectron 测试一个 Electron/React 应用程序,它使用WebdriverIO commands API。我想测试某些组件的属性,但我想确保仅在组件重新加载后才测试它们。

正常的 WebDriverIO 等待命令,例如waitForText()or waitForExist(),等待一些更改,但我需要等到组件重绘发生。例如,组件在重绘之前已经存在或已经有一些文本。这意味着对文本的任何测试都将在重绘之前进行,并且我不会测试新文本。有没有等待重绘的一般方法?

0 投票
0 回答
266 浏览

mocha.js - Spectron 测试可以在自己的桌面上运行吗?

我们让 mocha+Spectron 测试了一个 Electron 应用程序。他们目前运行大约一分钟。应用程序窗口不断打开和关闭,这在几个方面很烦人:

  1. 如果用户在测试期间在应用程序窗口中单击或键入,则通常会导致测试失败。

  2. 每个新窗口都以焦点打开,这使得很难使用任何其他程序。

(这就是 Linux、xfce 桌面上的行为;我可以想象其他操作系统/窗口管理器的行为可能略有不同?)

有没有办法在他们自己的桌面上运行 Spectron 测试?也许在另一个 X 会话中,它只是在测试的生命周期内运行?(不过,理想情况下,寻找一种适用于 Mac 和 Windows 的解决方案。)

(我看到了对 mocha-headless 的引用,但我认为这是为了测试网站?它可以与 Spectron 和 Electron 应用程序一起使用吗?)

0 投票
1 回答
906 浏览

javascript - 如何使用 WebdriverIO 和 Spectron 使用 Javascript 应用模糊事件

我正在使用 Mocha 为在 Electron 上运行的应用程序开发 Spectron UI 测试。我遇到的主要问题是 Javascript 不会像键盘的实际输入一样威胁工具输入的文本。

作为解决方法,我想在设置值后在特定字段上应用模糊事件。这里的问题是 WebdriverIO 的 'element' 方法返回的是 JSON 对象而不是 DOM 元素,因此 .on("blur") 不能链接到它。

有什么建议可以实现吗?

提前致谢。

0 投票
2 回答
840 浏览

node.js - 在光谱测试中选择选项

我正在使用 Electron 和 NodeJS 开发一个桌面应用程序,它具体是什么并不重要。我正在使用 spectron 测试我的电子应用程序。我已经实现了通过带有选项的下拉列表在不同保存的数据库之间进行选择的功能。在下拉列表中选择数据库时,将更新带有登录凭据的 json 文件以匹配所选数据库。我想编写一个测试来检查选择另一个选项时是否更改了 json 文件。我的主要问题是模拟从下拉菜单中选择另一个选项。

我一直坚持的是我必须在下拉列表中选择另一个选项来更改当前数据库的部分。我已经阅读了 spectron 文档和 webdriverIO 文档,但我仍然无法让它工作。

下拉菜单中将始终列出 3 个默认数据库作为选项。我将在下面列出下拉列表的 html 代码:

已经卡了一个多星期了,我也找不到任何在线解决问题的方法。很多问题如何使用 spectron 做事,但这次没有答案可以帮助我。我可能忘了提一些事情,所以请询问是否需要更多信息。

谢谢!

0 投票
0 回答
511 浏览

node.js - Mocha (Spectron) 在异步测试场景中突然超时

我想运行几周前编写的一些 Spectron e2e 测试,但令我惊讶的是,突然它们都因为同一个原因而停止工作。

在此处输入图像描述

根据错误消息,我正在处理被拒绝的承诺,但我无法弄清楚问题出在哪里。在我的测试用例结束时调用 done 会引发完全相同的错误。

我正在运行以下命令来启动我的测试服:mocha test/e2e

Mocha 然后在运行我的测试之前执行这个 index.js 以支持 ES6+ 特性

之后,它尝试运行这个小的 Login.spec.js,它返回上面提到的错误

0 投票
1 回答
625 浏览

javascript - Electron,Spectron:如何在单独的 javascript 文件中编写测试用例

我正在测试电子应用程序使用这些技术,Spectron,Chai,chai 正如承诺的那样我想将我的测试用例写在单独的文件中,除了所有在一个文件中。

这是我尝试过的,

只是我想从测试初始化​​文件中将案例 1 和案例 2 写入单独的文件。

0 投票
1 回答
763 浏览

javascript - Spectron 异步 isExisting 不返回 false

我正在使用 spectron 3.8.0 并试图检查 DOM 中是否存在 am 元素。我尝试使用waitUntilwith 的方法try/catch,但它没有按预期工作。最近,如果元素存在,我得到同步app.client.isExisting()返回 true,否则它会卡住并引发超时异常(mocha)。

下面的代码: