Как применить событие размытия с помощью Javascript с помощью WebdriverIO и Spectron

Я разрабатываю тесты Spectron UI с использованием Mocha для приложения, работающего на Electron. Основная проблема, с которой я столкнулся, заключается в том, что Javascript не угрожает вводам текста с помощью инструмента в равной степени с реальным вводом с клавиатуры.

В качестве обходного пути я хочу применить событие размытия к определенному полю после того, как для него установлено значение. Проблема здесь в том, что метод «element» WebdriverIO возвращает объект JSON, а не элемент DOM, поэтому .on («размытие») не может быть привязано к нему.

Есть предложения, как этого можно достичь?

Заранее спасибо.


person Stoyko Stoykov    schedule 20.03.2018    source источник
comment
Фрагмент кода помог бы глубже понять вашу проблему. И можно ожидать других предлагаемых решений. Поделитесь тем, что вы получаете в формате JSON и как вы его используете?   -  person T Gurung    schedule 20.03.2018
comment
element метод WebdirverIO возвращает следующее: {ELEMENT: '0.5501418109949332-1', 'element-6066-11e4-a52e-4f735466cecf': '0.5501418109949332-1'}, selector: '#name'}   -  person Stoyko Stoykov    schedule 21.03.2018
comment
Мне нужен обходной путь, как получить элемент DOM, а не этот файл JSON.   -  person Stoyko Stoykov    schedule 21.03.2018


Ответы (1)


Я знаю, что это было опубликовано очень давно, но я только что нашел этот пост, когда искал, как добиться того же. Я опубликую метод, который использовал для этого, на случай, если кому-то еще понадобится что-то подобное.

Тем временем я пришел к выводу, что напрямую добиться этого с помощью доступных функций webdriver.io невозможно, но это можно сделать в качестве альтернативы с помощью метода browser.execute.

Чтобы иметь возможность легко использовать это повторно, я создал функцию, которая использует функциональность browser.execute, а затем вызвал ее везде, где мне нужно было вызвать размытие.

function triggerBlur(elementSelector){
    browser.execute((selector) => {
        document.querySelector(selector).blur();
    }, elementSelector);//pass the selector to the execute function
}

    
//example usage

let targetElementSelector = '#myInput',

targetElement = browser.$(targetElementSelector);

targetElement.setValue("new value");

triggerBlur(targetElementSelector);
person Burning-Ice    schedule 11.02.2021