量角器测试在Chrome中运行,但在IE11中没有

时间:2017-06-01 15:50:58

标签: angularjs internet-explorer protractor

我正在尝试在不同的浏览器上进行简单的Protractor测试,我遇到它在IE上失败,但在Chrome上没有。

我正在http://juliemr.github.io/protractor-demo/上测试angularjs应用程序,这是一个简单的计算器应用程序。

测试包含以下代码:

describe('Protractor Demo App', function() {
  it('should add 2 numbers', function() {
    var i,j;
    var w=10000;
    var t=100;
    i=Math.floor((Math.random() * t) + 1);
    j=Math.floor((Math.random() * t) + 1);

    browser.sleep(w);
    browser.get('http://juliemr.github.io/protractor-demo/');
        browser.waitForAngular();

    element(by.model('first')).sendKeys(i);
    element(by.model('second')).sendKeys(j);
    element(by.id('gobutton')).click();

    console.log('Sent: ' + i.toString() + ' + ' + j.toString());
    var x = element.all(by.repeater('result in memory').column('value')).get(0).getText();
    expect(x).toEqual((i+j).toString());

我的配置文件是:

// conf.js
exports.config = {
        capabilities: {
        'browserName': 'internet explorer',
        'platform': 'ANY',
        'version': '11',
        'nativeEvents': false,
        'unexpectedAlertBehaviour': 'accept',
        'ignoreProtectedModeSettings': true,
        'enablePersistentHover': true,
        'disable-popup-blocking': true
    },
  framework: 'jasmine',
  seleniumAddress: 'http://localhost:4444/wd/hub',
  specs: ['spec.js']
}

当我为Chrome设置最后一个(即,评论功能部分)时,测试作为魅力运行并且测试正常。我看到chrome窗口弹出,脚本输入数字,点击按钮,结果出现,窗口关闭。

当我设置IE(取消注释功能部分)并启动脚本时,会弹出一个IE窗口,其中包含文本" 这是WebDriver服务器的初始启动页面。 "并在那里停留一段时间。之后我看到脚本输入数字,它会立即关闭,对日志进行测试失败,并显示消息:

  Message:
    Failed: Index out of bound. Trying to access element at index: 0, but there are only 0 elements that match locator by.repeater("result in memory").column("value")
  Stack:
    NoSuchElementError: Index out of bound. Trying to access element at index: 0, but there are only 0 elements that match locator by.repeater("result in memory").column("value")

好像是" Go"按钮没有被点击,但我不明白为什么。 任何人都可以帮我理解发生了什么吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

奇怪的是,这适用于Chrome。最初我认为这也是一个IE问题;但是,上面的代码有一个问题。在StackOverflow link listed above in your comment中,正确使用了列方法。量角器网站上显示column usage

看起来可疑的代码行:

var x = element.all(by.repeater('result in memory').column('value')).get(0).getText();

这应该是:

var x = element.all(by.repeater('result in memory').column('result .value')).get(0).getText();

此示例与protractor-cookbook几乎相同。我也会检查一下。