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

标签 java selenium-webdriver dom-events sendkeys cucumber-java

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

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

screenshot

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

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

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

最佳答案

尝试使用以下函数触发 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');

关于java - 单击 Web 应用程序中的另一个元素后,输入的值被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61242045/

相关文章:

java - 从 Excel 文件读取空单元格时出现异常

java - Mac OS X 中的自定义应用程序菜单

java - 通过 Selenium Java 运行 Cucumber 脚本时如何解决 java.lang.ExceptionInInitializerError 和 java.lang.NoClassDefFoundError

java - Selenium IE WebDriver 仅在调试时有效

javascript - 需要在查看模式和编辑模式下获取具有不同值的 EditText Cell

java - 我可以使 ProgressMonitor 对话框成为模态吗?

java - 如何在 Java 中加速读写 base64 编码的 gzip 大文件

python - 如何处理 Selenium 中的错误(无法定位元素)

javascript - 我怎样才能模仿 stopImmediatePropagation() 的行为(不使用 jQuery)

javascript - 如何将 jQuery 事件处理程序转换为纯 JavaScript