JavaScript量角器(Selenium)验证输入是否集中

时间:2014-03-27 22:27:16

标签: selenium protractor

我试图在量角器中测试元素是否使用selenium webdriver进行聚焦。这是在AngularJS加载之前,所以我必须使用驱动程序,如下所示:

var ptor = protractor.getInstance(),
    driver = ptor.driver;

我还需要知道如何让测试等到输入被聚焦。我必须等到一个模型被触发,所以输入没有聚焦半秒,如下所示:

window.setTimeout(function(){
  $("input#email").focus();
}, 500);

知道如何在500ms后验证输入是否有焦点?

2 个答案:

答案 0 :(得分:8)

根据我对this question的回答,并根据您的情况进行调整,它看起来像:

it('should focus on foo input', function () {
    // to wait 500ms+
    browser.driver.sleep(600);

    // using the Protractor 'element' helper
    // https://github.com/angular/protractor/blob/master/docs/api.md#element
    // var input = element(by.id('foo'));

    // using findElement with protractor instance
    var input = driver.findElement(protractor.By.id('foo'));

    expect(input.getAttribute('id')).toEqual(browser.driver.switchTo().activeElement().getAttribute('id'));
});

答案 1 :(得分:0)

我使用glepretre's answer,但必须使用promise.all解析两个元素的getAttribute promise。

let activeElement = browser.driver.switchTo().activeElement().getAttribute('id');
let compareElement = element(by.id('your-element-id')).getAttribute('id'); 
webdriver.promise.all([compareElement, activeElement]).then((id) => {
    expect(id[0]).to.equal(id[1]);
});