您好,我正在尝试使用 xpath 将值填充到文本框(检查下图)。
Actions actions = new Actions(driver);
actions.moveToElement(driver.findElement(By.xpath("//*[@class='CzI8E']")));
actions.click();
Thread.sleep(3000);
actions.moveToElement(driver.findElement(By.xpath("//*[@class='_2S1VP copyable-text selectable-text']")));//_2S1VP copyable-text selectable-text
actions.sendKeys(WhatsappConstants.TEXT_MESSAGE);
actions.build().perform();
但是我遇到了这个异常
org.openqa.selenium.WebDriverException:未知错误:ChromeDriver 仅支持 BMP 中的字符
其他 stackoverflow 答案说使用 Firefox 驱动程序,但就我而言,我需要您仅使用 chrome。
最佳答案
这是 Chromedriver 的已知限制,请参阅 http://crbug.com/chromedriver/2269查看官方错误跟踪器中的错误报告。
您可以做的就是仅将自己限制为支持的字符,基本上来自:http://www.columbia.edu/kermit/ucs2.html
或者,您可以模拟输入,而不是使用前端 JS 片段真正发送 key ,如下所示:
(function (element, text) {
Array.prototype.forEach.call(text, function (char) {
element.value += char;
element.dispatchEvent(new KeyboardEvent("keydown"));
element.dispatchEvent(new KeyboardEvent("keypress"));
element.dispatchEvent(new KeyboardEvent("input"));
element.dispatchEvent(new KeyboardEvent("keyup"));
});
}).apply(null, arguments);
然后您可以使用 JavascriptExecutor 进行调用:
((JavascriptExecutor) driver).executeScript(JS_CODE, element, text);
该代码段适用于具有可写 .value
属性的元素,它可以扩展为支持 contenteditable
元素。
请注意,事件的字段设置为其默认值,包括按键代码等,请参阅 https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/KeyboardEvent此外,您可能还需要添加要触发的其他事件,以更好地模拟用户输入。
关于java - 无法将键发送到 div 元素 Selenium - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52575938/