javascript函数“ document.getElementById()”可以正常工作

时间:2019-11-14 13:45:31

标签: javascript

我正在进行浏览器记录测试,在该测试中,我需要在输入字段中输入一个带有  自动搜索触发功能。

document.getElementById('InputFieldWIthSearchFunctionality').value = "Saurav";

但是,如果我将值设置为上述字段,则不会触发搜索。

请帮助。

2 个答案:

答案 0 :(得分:2)

仅设置该值将不会调用输入字段的onchange和/或oninput事件侦听器。自动搜索触发器可能正在监听此事件。

您可以将这两个事件手动分派到输入字段:

const elem = document.getElementById("InputFieldWIthSearchFunctionality");

// create onchange event
const onchangeEvent = document.createEvent("HTMLElements");
onchangeEvent.initEvent("onchange", false, true);

// create oninput event
const oninputEvent = document.createEvent("HTMLElements");
oninputEvent.initEvent("oninput", false, true);

// dispatch events to the input field
elem.dispatchEvent(onchangeEvent);
elem.dispatchEvent(oninputEvent);

这绝对可以在Chrome和所有使用Chromium的浏览器中使用,我没有测试任何其他浏览器,这取决于您。

  

从以下答案中获取的有关手动调度事件的信息:https://stackoverflow.com/a/2856602/7846567

答案 1 :(得分:-1)

以这种方式思考...通过直接使用JS设置值,您可以简化真实用户将使用的典型UI,从而导致此问题。如果您尝试编写行为类似于用户的测试,现在应该很少使用JS(几乎从不使用),现在您可以明白为什么了。

在Java中,您可以这样做

driver.findElement(By.id("InputFieldWIthSearchFunctionality")).sendKeys("Saurav");

这将导致您的情况触发搜索。