JavaScript транспортир (Selenium) проверяет, сфокусирован ли ввод
Я пытаюсь проверить, фокусируется ли элемент с помощью selenium webdriver в транспортире. Это происходит до загрузки AngularJS, поэтому мне приходится использовать драйвер, как показано здесь:
var ptor = protractor.getInstance(),
driver = ptor.driver;
Мне также нужно знать, как заставить тест ждать, пока входной сигнал не будет сфокусирован. Я должен ждать, пока модель не будет запущена, чтобы вход не был сфокусирован на полсекунды, как показано здесь:
window.setTimeout(function(){
$("input#email").focus();
}, 500);
Есть идеи, как проверить, имеет ли вход Фокус после 500 мс?
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