我正在进行浏览器记录测试,在该测试中,我需要在输入字段中输入一个带有 自动搜索触发功能。
document.getElementById('InputFieldWIthSearchFunctionality').value = "Saurav";
但是,如果我将值设置为上述字段,则不会触发搜索。
请帮助。
答案 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");
这将导致您的情况触发搜索。