带光谱测试的电子应用程序的简单示例

2024-04-20

我正在尝试学习如何测试应用程序,使用电子构建,使用 Spectron。 为此,我从网上获取了一个示例应用程序,其中包含简单的标题、计数器标签和增量按钮。

我使用摩卡作为测试运行。

测试应启动应用程序,按下按钮并检查计数器标签。

我什至无法达到应用程序正确启动的程度。

当我运行测试时,出现错误“TypeError:无法读取未定义的属性‘waitUntilWindowLoaded’”。

另外,在查看启动的应用程序时,我在开发工具中看到一个错误: “未捕获的引用错误:未定义要求”

main.js

const {app, BrowserWindow} = require('electron')
const url = require('url')
const path = require('path')

let win

function createWindow() {
   win = new BrowserWindow({width: 800, height: 600})
   win.loadURL(url.format ({
      pathname: path.join(__dirname, 'index.html'),
      protocol: 'file:',
      slashes: true
   }))

   // open dev tools
   win.webContents.openDevTools();
}

app.on('ready', createWindow)

索引.html

<!DOCTYPE html>
<html>
   <head>
      <meta charset = "UTF-8">
      <title>Hello World!</title>
      <link rel = "stylesheet" 
         href = "./bower_components/bootstrap/dist/css/bootstrap.min.css" />
   </head>

   <body>
      <div class = "container">
         <h1>This page is using Bootstrap and jQuery!</h1>
         <h3 id = "click-counter"></h3>
         <button class = "btn btn-success" id = "countbtn">Click here</button>
         <script src = "./view.js" ></script>
      </div>
   </body>
</html>

view.js

let $ = require('jquery')  // jQuery now loaded and assigned to $
let count = 0
$('#click-counter').text(count.toString())
$('#countbtn').on('click', () => {
   count ++ 
   $('#click-counter').text(count)
}) 

包.json

{
  "name": "gui_testing",
  "version": "1.0.0",
  "description": "app to test spectron",
  "main": "main.js",
  "scripts": {
    "test": "mocha"
  },
  "author": "ACW",
  "license": "ISC",
  "dependencies": {
    "jquery": "^3.4.1"
  },
  "devDependencies": {
    "electron": "^7.1.7",
    "mocha": "^6.2.2",
    "spectron": "^9.0.0"
  }
}

./测试/index.js

const assert = require('assert')
const path = require('path')
const { Application } = require('spectron')
const electronPath = require('electron') // Require Electron from the binaries included in node_modules.
const baseDir = path.join(__dirname, '..')

const sleep = time => new Promise(r => setTimeout(r, time))

describe('Application launch', function () {
    this.timeout(30000)

    const app = new Application({
        path: electronPath,
        args: [baseDir]
    })

    before(function () { app.start() })

    after(function () { app.stop() })

    it('show an initial window', async function () {
        await app.client.waitUntilWindowLoaded();
        const count = await app.client.getWindowCount();
        assert.equal(count, 1)
    })
})

像这样创建浏览器窗口。

win = new BrowserWindow({width: 800, height: 600,
    webPreferences: {
        nodeIntegration: true
    }
})

那么这将解决未定义的需求问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带光谱测试的电子应用程序的简单示例 的相关文章

随机推荐

  • mysql 中的 Rank() 优于 Partition by

    我完全困惑于在mysql中从rank over partition by x order by y desc 创建一个新列 LoginRank 在sql server中 我将编写以下查询 以创建一个按 login 分组并按 id 排序的列
  • 在 AS3 中快速设置关键帧上的实例名称

    现在在 Flash CS3 及更高版本 使用 Actionscript 3 中 如果您在图层中的多个关键帧中使用相同的实例 并且您决定稍后分配或更改实例名称 则必须转到每个关键帧并设置实例名称 这是一个很大的麻烦 有没有更快或更好的方法来做
  • 为什么 _ destroy 在语句末尾?

    我看到了其他一些问题answers https stackoverflow com a 25877389 221955说明let foo 在语句末尾而不是在作用域退出时销毁结果 这就是let a foo does 我找不到任何官方描述 也找
  • 在android中通过滑动删除应用程序时关闭服务

    当用户从当前运行的应用程序列表中删除应用程序时 我想关闭服务 在这里 我正在做的事情是 当用户启动应用程序时 服务就会启动并保持进行中 但是 当用户通过滑动删除应用程序时 就会创建新服务 我想关闭该服务 下面是我的代码 Start serv
  • 解析 ksoap2 响应

    我使用 ksoap2 lib 从 Android 客户端与 SOAP Web 服务进行通信 ksoap 团队做得很好 但问题是 没有任何好的例子如何在不同方面正确使用它 例如 我得到肥皂响应以下数据 anyType StatusSettin
  • 为什么 Mongodb 中的 ISO 日期显示提前一天?

    存储的日期如下所示 date of birth ISODate 1920 01 02T00 00 00Z 使用 moment 它在模型中被格式化 以便填充用于更新文档的输入 如下所示 AuthorSchema virtual date of
  • 如何从 JPEG 中裁剪多个矩形或正方形?

    我有一个 jpeg 我想从其中裁剪包含图形的部分 底部的部分 截至目前 我使用此代码来实现相同的目的 from PIL import Image img Image open r D aakash graph2 jpg area 20 32
  • 如何跳转到 vim 中不同选项卡内的标记?

    我使用 MacVim 通常会打开许多 选项卡 我希望能够在任何打开的文件中放置标记并在它们之间跳转 mK and K当标记位于同一个选项卡中时效果很好 但我必须使用gt找到选项卡 然后K找到标记 一定有更好的方法吗 这是一个快速而肮脏的技巧
  • WPF 文本框插入符消失

    我正在开发一个 WPF 应用程序TextBox成分 我的文本框插入符有问题 看来 取决于地点TextBox插入符号本身在某些特定位置消失 插入符号显示 插入符号消失 插入符返回 The TextBox风格很简单
  • 如何将 GPS 数据从 Android 发送到网站?

    我是 Android 和 Web 服务开发新手 目前我正在开发Android程序 该程序将发送经度和纬度信息到asp net网站 以显示位置更改网站地图 问题是 如何将此数据发送到网站 最佳实践 对合适框架的任何建议 从Android应用程
  • 如何将三个列表压缩到嵌套字典中

    我有三个清单 z1 A A B B z2 k1 k2 k1 k2 z3 v1 v2 v3 v4 当我写时 print dict zip z2 z3 这是我的输出 k2 v4 k1 v3 我期望这样 A k1 v1 k2 v2 B k1 v3
  • 为什么 for(var i in Math) 不迭代 Javascript 中的 Math.* ?

    由于某种原因 for var i in Math console log i 没有显示 Javascript 中预期的 tan cos atan2 E PI Because Math是一个内置对象 其属性已标记不可枚举 许多内置对象都有这种
  • 我可以使用 Meteor 将 this._id 值从一个模板助手传递到另一个模板助手吗?

    我有以下模板 html 及其受人尊敬的管理器 js 文件 admin管理类别 管理员添加类别 管理更新类别 考虑以下
  • 将 pubnub 添加到 angular2 cli 项目

    我想将 PubNub 添加到 angular2 cli 项目中 问题出在链接上 但是 我按照 npmjs com 上 pubnub angular2 包的说明进行操作 当我尝试在浏览器中加载它时 错误消息是这样的 例外 PubNub 不在全
  • 在 Epson TM-T88IVM 上打印简体汉字

    我正在尝试使用 C 中的 Microsoft 服务点 SDK 在 Epson TM T88IV M 并行端口 上打印中文字符 但是 它们在打印机上显示为问号 我的 PosPrinter 具有以下有效的 CharacterSetList 25
  • SQL Not Like 语句不起作用

    我在存储过程中有以下代码 WHERE WPP ACCEPTED 1 AND WPI EMAIL LIKE MATH UCLA EDU AND WPP SPEAKER 0 OR WPP SPEAKER IS NULL AND WPP COMM
  • 尝试在 getline 中使用 int

    cout lt lt How many questions are there going to be on this exam lt lt endl cout lt lt gt gt getline cin totalquestions
  • android webservice响应“解析xml到pojo异常”

    我正在尝试访问 android 中的肥皂网络服务 AndroidHttpTransport httpTransport new AndroidHttpTransport URL String result String httpTransp
  • Linux cp 与正则表达式

    我想复制目录中的一些文件 重命名文件但保留扩展名 这可以通过简单的cp 使用正则表达式 例如 cp myfile mydir newname 1 所以我可以复制保留扩展名的文件 但重命名它 有没有办法获得匹配的元素cp正则表达式在命令中使用
  • 带光谱测试的电子应用程序的简单示例

    我正在尝试学习如何测试应用程序 使用电子构建 使用 Spectron 为此 我从网上获取了一个示例应用程序 其中包含简单的标题 计数器标签和增量按钮 我使用摩卡作为测试运行 测试应启动应用程序 按下按钮并检查计数器标签 我什至无法达到应用程