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

时间:2017-03-13 15:15:24

标签: java angularjs selenium webdriver

我正在使用Webdriver中的发送键功能发送以下值:

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

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

但是,发送密钥后,屏幕上不会显示此搜索。我还需要做些什么才能进行这种互动吗?

2 个答案:

答案 0 :(得分:1)

此方法对我有用:

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);
}

答案 1 :(得分:0)

我已经设法通过利用sendKeys函数并发送一个数字键盘来找到我自己特定问题的解决方案(我之后的字符串有一个唯一的数字部分)。然后记录自动突出显示,因此发送Return键选择记录并按需要填充值

对于任何感兴趣的人,代码如下所示:

inputField.click();
Actions action = new Actions(driver);
action.sendKeys(Keys.NUMPAD3,Keys.NUMPAD2).build().perform();
action.sendKeys(Keys.RETURN).build().perform();

在这个函数中看起来有一个方法以unicode格式发送密钥,但是我无法为我工作,但它可能适用于其他人:

action.sendKeys(Keys.getKeyFromUnicode("[Unicode character]"));

希望这有帮助