Java Selenium Webdriver - 将文本发送到字段不会触发 angularjs 搜索字段

标签 java angularjs selenium webdriver

我正在使用 Webdriver 中的发送键函数发送以下值:

WebElement inputField = driver.findElement(By.name("input"));
inputField.sendKeys("String of text");

这应该会在幕后触发一个 angularjs 函数,然后它会为我提供一个与已传递的文本字符串相匹配的值列表。

但是,在发送 key 后,此搜索并未显示在屏幕上。我还需要做些什么来允许这种互动吗?

最佳答案

这个方法对我有用:

public void enterTextReactJs(WebElement inputField, String value) {
    ((JavascriptExecutor) driver).executeScript("arguments[0].value = '"+value+"'", inputField);
    ((JavascriptExecutor) driver).executeScript("arguments[0]._valueTracker", inputField);
    ((JavascriptExecutor) driver).executeScript("arguments[0]._valueTracker.setValue('xxx')", inputField);
    ((JavascriptExecutor) driver).executeScript("arguments[0].dispatchEvent(new Event('input', { bubbles: true, simulated: true }))", inputField);
}

关于Java Selenium Webdriver - 将文本发送到字段不会触发 angularjs 搜索字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42767128/

相关文章:

javascript - 'jsonp' 未定义(带有 PubNub 的 AngluarJS)

selenium - Selenium Grid总是执行我的测试的多余实例

java - AsyncTask 中的字符串越来越少

java - hibernate 时无法保存数据

javascript - Angular : Where to put reusable configuration

javascript - 如何让 UI-Router 打开一个标签页

dom - Selenium 的幕后工作

python - Ubuntu:selenium.common.exceptions: session 未创建:此版本的 ChromeDriver 仅支持 Chrome 版本 79

Java - 在 JVM 中修改 Object 类的 toString()

java - 将循环(while 和 for)转换为流