单击Web应用程序中的另一个元素后,输入的值将被删除

问题描述 投票:0回答:1

我有一个输入字段,我们需要在其中输入一些值,但是该输入字段将使用货币值进行更新,但是当我自动将填充的值设置为空后,单击另一个元素后,该值就会更新。我该如何解决?

我已附上我的应用程序的屏幕截图:

screenshot

下面是我正在使用的代码:

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

即使我尝试使用TAB键事件,但仍然存在相同的行为。

java selenium-webdriver dom-events sendkeys cucumber-java
1个回答
0
投票

尝试使用以下功能触发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`)

请参考此post,这将使您有一个发现相关事件的想法。但是,您始终可以尝试将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');
© www.soinside.com 2019 - 2024. All rights reserved.