【问题标题】:protractor: test for focus of field量角器:测试视野焦点
【发布时间】:2015-01-04 16:17:14
【问题描述】:

如何使用量角器测试输入字段是否聚焦?我正在这样做:

it('should focus email field', function(){
    expect(element(by.model('login.email')).getAttribute('id')).toEqual(browser.driver.switchTo().activeElement().getAttribute('id'));
});

这似乎适用于 chrome,但该测试在 Firefox 中失败。有什么想法吗?

这是失败信息:

[firefox #1]   2) Login page should focus email field
[firefox #1]    Message:
[firefox #1]      Expected 'login' to equal ''.
[firefox #1]    Stacktrace:
[firefox #1]      Error: Failed expectation
[firefox #1]     at [object Object].<anonymous> (/Users/Jason/Desktop/app/test/e2e/login-spec.js:38:69)
[firefox #1] 

这是我的测试脚本:

describe('Login page', function() {
    var loginURL = 'http://localhost:8090/app/#/login';
    var loginEmailField = 'login-email';

    beforeEach(function() {
        browser.get(loginURL);
    });

    it('should focus email field', function(){     
        expect(element(by.id(loginEmailField)).getAttribute('id')).toEqual(browser.driver.switchTo().activeElement().getAttribute('id'));
    });
});

【问题讨论】:

  • 你能提供失败时得到的错误吗?谢谢。
  • 能否请您显示规范的全部内容,包括beforeEach 电话?谢谢。
  • 更新了整个规范

标签: angularjs testing protractor end-to-end


【解决方案1】:

您需要在做出任何断言之前等待角度

beforeEach(function() {
    browser.get(loginURL);
    browser.waitForAngular();
});

除此之外,这可能与 autofocus 属性有关,它在 Firefox 中存在/有问题,请参阅:

【讨论】:

  • 谢谢。很高兴知道。但这并不能解决问题。 Firefox 仍然失败,而 chrome 没有失败。奇怪。
  • 给出错误 - 'TypeError: Object [object Object] has no method 'activeElement''
  • 我应该说,在输入字段上设置焦点是通过指令完成的: 这会导致问题吗?
  • @Jason 是的,我认为您的最后一条评论是解决问题的关键。 Firefox 上的autofocus 似乎存在问题,请参阅webmasters.stackexchange.com/questions/15020/…stackoverflow.com/questions/9955398/…。你用的是什么火狐版本?
  • Firefox 版本 34。让我看看这些链接
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-22
  • 2016-10-03
  • 1970-01-01
相关资源
最近更新 更多