Введенные значения удаляются после нажатия на другой элемент в веб-приложении. - PullRequest
0 голосов
/ 16 апреля 2020

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

Я приложил скриншот моего приложения:

screenshot

И ниже мой код I ' m с помощью:

jse.executeScript("document.getElementById('Amount1').setAttribute('value', '20')");

Даже я пытался использовать TAB ключевые события, но все равно такое же поведение.

1 Ответ

0 голосов
/ 17 апреля 2020

Попробуйте вызвать onchange или связанное с ним событие, используя приведенную ниже функцию.

public static void jsTriggerEventOnElement(WebDriver driver, WebElement element, String eventName) { 
        String jsFunction = " var genericEvent = document.createEvent ('Event');  clickEvent.initEvent ('" + eventName + "', true, true); arguments [0].dispatchEvent (genericEvent); ";
        JavascriptExecutor js = (JavascriptExecutor) driver;
        js.executeScript(jsFunction, element);
}

Вы можете запустить событие, используя приведенную ниже строку кода после ввода значения в поле.

// enter the value using the normal send_keys/js

// now call the jsTriggerEventOnElement method, here we are triggering the onchange event 
// please change the event based the associated event
jsTriggerEventOnElement(driver, element, 'onchange`)

Пожалуйста, обратитесь к этой записи , которая даст вам представление о связанных событиях. Но вы всегда можете попробовать onchange в качестве первой проверки.

Редактировать

Попробуйте выполнить следующее.

public static void jsTriggerEventOnElement(WebDriver driver, WebElement element, String eventName) { 
        String jsFunction = " var clickEvent = document.createEvent ('Event');  clickEvent.initEvent ('" + eventName + "', true, true); arguments [0].dispatchEvent (clickEvent); ";
        JavascriptExecutor js = (JavascriptExecutor) driver;
        js.executeScript(jsFunction, element);
    }
jsTriggerEventOnElement(driver,element, 'onblur');
...