硒|影子根|键盘无法访问元素输入

发布于 2025-01-14 11:59:57 字数 653 浏览 0 评论 0原文

使用 Selenium 4.1.2 / Java 11 和带有“shadow root”元素的页面,我在解决特定输入文本元素时遇到问题。

使用此代码,我到达输入元素,光标闪烁,但不写入 sendKeys 单词:

Thread.sleep(2000);
WebElement inputFIELD = (WebElement) ((JavascriptExecutor)driver).executeScript("return document.querySelector('#TextFieldTEXTFIELD').shadowRoot.querySelector('#vaadin-text-field-input-3 > slot:nth-child(2) > input')");
inputFIELD.sendKeys("test");

终端中的例外情况是:

Exception in thread "main" org.openqa.selenium.ElementNotInteractableException: Element <input> is not reachable by keyboard

到目前为止,我还没有找到解决方案。有什么想法吗?

我觉得奇怪的是光标找到了它的元素但不写。

With Selenium 4.1.2 / Java 11 and a page with "shadow root" elements I have a problem to address a specific input text element.

With this code I reach the input element, the curor is blinking but does not write the sendKeys words:

Thread.sleep(2000);
WebElement inputFIELD = (WebElement) ((JavascriptExecutor)driver).executeScript("return document.querySelector('#TextFieldTEXTFIELD').shadowRoot.querySelector('#vaadin-text-field-input-3 > slot:nth-child(2) > input')");
inputFIELD.sendKeys("test");

The exception to this in the terminal is this:

Exception in thread "main" org.openqa.selenium.ElementNotInteractableException: Element <input> is not reachable by keyboard

I have not found a solution to this so far. Any idea?

I find it strange the cursor find its element but does not write.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

陈年往事 2025-01-21 11:59:57

您也可以使用 JavascriptExecutor 来设置值。

//inputFIELD.sendKeys("test");
((JavascriptExecutor)driver).executeScript("arguments[0].setAttribute('value', 'test')", inputButton);

或使用动作链:

new Actions(driver).moveToElement(inputButton).sendKeys("test").build().perform();

You can use JavascriptExecutor to set the values as well.

//inputFIELD.sendKeys("test");
((JavascriptExecutor)driver).executeScript("arguments[0].setAttribute('value', 'test')", inputButton);

or using actions chain:

new Actions(driver).moveToElement(inputButton).sendKeys("test").build().perform();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文