首页 > web前端 > js教程 > 为什么我的 Selenium Web 自动化失败并显示'ElementNotInteractableException:键盘无法访问元素”?

为什么我的 Selenium Web 自动化失败并显示'ElementNotInteractableException:键盘无法访问元素”?

Barbara Streisand
发布: 2024-11-30 02:47:18
原创
318 人浏览过

Why is My Selenium Web Automation Failing with

ElementNotInteractableException: Element is Not Reachable by Keyboard

在 Web 自动化上下文中,错误“Element is notreachable by Keyboard” " 表示无法对特定元素执行自动交互(例如发送文本或单击)的情况。发生此错误的原因有多种,包括:

原因

  • 隐藏或被阻止 - 元素可能被隐藏或被另一个元素暂时(例如,模态覆盖)或永久(例如,显示:无)阻挡
  • ReadOnly - 某些元素,例如标题(

    标签)和标签(

  • 动态元素 - 某些 Web 框架(例如 React)可能会动态创建和修改元素,导致定位特定元素时可能出现问题。

解决方案

根据根本原因,有多种方法可以解决解决此错误:

  • 如果隐藏/阻止

    • 使用显式 WebDriverWait 和 ExpectedConditions 使元素可见/可点击。
    • 使用 JavaScriptExecutor 操作元素的显示样式(例如,设置 'display:
  • 如果只读

    • 避免尝试输入文本或单击此类元素。
    • 相反,请关注页面内的其他交互元素或
  • 如果是动态元素

    • 采用强大的定位器策略来可靠地识别元素,即使它们的属性或标识符经常更改。
    • 考虑将 XPath 表达式与动态属性选择器或结合使用的 CSS 选择器结合使用用于特定元素标识的多个属性。

Firefox 特定解决方案

在 Firefox 版本 58 及更高版本中,一种称为引入“moz:webdriverClick”来控制交互性检查。将此功能设置为“false”可以暂时禁用某些交互性检查,从而导致元素上可能出现不准确的点击或文本输入。

代码示例

这里有一个示例演示如何使用 WebDriverWait 解决 Selenium WebDriver for Java 中的问题以及预期条件:

WebDriver driver = new FirefoxDriver();
driver.get("http://www.facebook.com");

// Wait until the first name field is visible and clickable
WebDriverWait wait = new WebDriverWait(driver, 20);
WebElement firstNameField = wait.until(ExpectedConditions.elementToBeClickable(By.id("u_0_b")));

// Send text to the first name field.
firstNameField.sendKeys("testing it ");
登录后复制

以上是为什么我的 Selenium Web 自动化失败并显示'ElementNotInteractableException:键盘无法访问元素”?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板