如何使用光谱与电子应用程序的控件进行交互

时间:2016-11-17 03:49:01

标签: electron

我的项目正在使用Electron框架。开发人员已经建成并给了我一个电子exe。当您单击并打开exe时,它会显示一个登录框,这是我的应用程序的入口点。表单基本上有3个控件,用户名,密码文本框和登录按钮。现在我必须在该页面上执行功能测试。我的要求是在用户名和密码文本框中输入一些文本,然后单击提交按钮。 (在这种情况下,假设是成功登录)。登录后,我看到一条欢迎消息,我必须测试。我的问题是如何从电子应用程序获取文本框并提交按钮引用并对其执行操作。我已经尝试了下面的代码,它打开了我的电子exe,但什么也没做,测试用例传递。

var assert = require('assert');
var Application = require('spectron').Application
describe('Test Suite 1', function () {
    this.timeout(100000)
    beforeEach(function () {
        this.app = new Application({
            path: '/CorumDispense-win32-ia32/CorumDispense.exe'
        })

        return this.app.start()        
    })
    /*afterEach(function () {
        if (this.app && this.app.isRunning()) {
            return this.app.stop()            
        }
    })*/
    it('Login Dispense', function () {
        var txtUserName = this.app.client.elementIdText('inpuUsername3');
        var txtPassword = this.app.client.elementIdText('inputPassword3');   
        var btnSignIn = this.app.client.element('//button/*[text(),Sign in]');
        txtUserName.keys('Bharat');     
        txtPassword.keys('Bharat');     

        //click on signin button
        btnSignIn.click();

    })
})

输出是测试用例已通过但我没有看到任何文本被键入用户名或密码并且没有点击按钮

Test Name:  Test Suite 1 Login Dispense
Test Outcome:   Passed
Result StandardOutput:  
mocha.json options file not found. Using default values: { ui: 'tdd', reporter: 'tap', timeout: 2000 }
1..1
ok 1 Test Suite 1 Login Dispense
# tests 1
# pass 1
# fail 0

我的package.json

{
  "name": "lighthouse",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "description": "Lighthouse",
  "author": {
    "name": "bpappu"
  },
  "dependencies": {
    "body-parser": "~1.8.1",
    "cookie-parser": "~1.3.3",
    "debug": "~2.0.0",
    "express": "~4.9.0",
    "jade": "~1.6.0",
    "morgan": "~1.3.0",
    "serve-favicon": "~2.1.3",
    "spectron": "^3.4.0",
    "stylus": "0.42.3"
  },
  "devDependencies": {
    "chai": "^3.5.0",
    "electron": "^1.4.6",
    "electroner": "^4.0.2",
    "mocha": "^3.1.2",
    "spectron": "^3.4.0",
    "spectron-keys": "0.0.1"
  }
}

有人可以告诉我,如果我在这里遗漏了什么。 干杯, 巴拉德瓦。

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。问题在于应用程序中打开的开发人员工具。这导致了问题,我无法获取控件。一旦开发人员重新打包应用程序并关闭了开发人员工具选项,那么上面的代码就可以了。我正在关闭这个问题。