我正在使用Webdriver中的发送键功能发送以下值:
WebElement inputField = driver.findElement(By.name("input"));
inputField.sendKeys("String of text");
这应该在幕后触发angularjs函数,然后为我提供一个与已传递的文本字符串匹配的值列表。
但是,发送密钥后,屏幕上不会显示此搜索。我还需要做些什么才能进行这种互动吗?
答案 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]"));
希望这有帮助