java - 无法将键发送到 div 元素 Selenium - Java

标签 java selenium selenium-chromedriver

您好,我正在尝试使用 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。

enter image description here

最佳答案

这是 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/

相关文章:

java - 如何用Java计算Azure存储容器大小?

javascript - Java Servlet 在无限循环中写入图像

selenium - 如何将 selenium 2 PageFactory init Elements 与 Wait.until() 一起使用?

python - 使用 Selenium 和 Python 禁用 Shockwave Flash 插件

python-3.x - 使用 Selenium 时是否需要安装 Chrome 或仅安装 chromedriver?

java - 将 HTML 5 数据属性传递给 Play!表单输入

java - BigInteger 阶乘 表 1-30

java - 错误 : More than one file was found with OS independent path 'META-INF/DEPENDENCIES'

java - 切换窗口在 selenium webelement java 中不起作用

mobile - 在 ChromeDriver 中模拟移动设备