JavaScript транспортир (Selenium) проверяет, сфокусирован ли ввод



Я пытаюсь проверить, фокусируется ли элемент с помощью selenium webdriver в транспортире. Это происходит до загрузки AngularJS, поэтому мне приходится использовать драйвер, как показано здесь:



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


Мне также нужно знать, как заставить тест ждать, пока входной сигнал не будет сфокусирован. Я должен ждать, пока модель не будет запущена, чтобы вход не был сфокусирован на полсекунды, как показано здесь:



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


Есть идеи, как проверить, имеет ли вход Фокус после 500 мс?

493   2  

2 ответов:

Основываясь на моем ответе на этот вопрос и адаптируя его к вашему случаю, он будет выглядеть следующим образом:

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'));
});

Я использовал ответ glepretre, но должен был решить getattribute promises для обоих элементов, используя 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]);
});

Comments

    Ничего не найдено.