首页 > web前端 > js教程 > 为什么我在将文本发送到 Facebook 输入字段时收到'org.openqa.selenium.ElementNotInteractableException”?

为什么我在将文本发送到 Facebook 输入字段时收到'org.openqa.selenium.ElementNotInteractableException”?

Mary-Kate Olsen
发布: 2024-11-27 18:37:12
原创
177 人浏览过

Why Am I Getting

Selenium WebDriver:将文本发送到 Facebook 中的 FirstName 字段时出现“org.openqa.selenium.ElementNotInteractableException:无法通过键盘访问元素”

尝试将按键发送到键盘无法交互的输入字段时会发生此错误。在这种特定情况下,向 Facebook 上的“名字”字段发送文本时会遇到错误。

原因

“元素无法通过键盘访问” " 错误可能由于多种原因而发生,包括:

  • 该元素被另一个元素隐藏或遮挡元素。
  • 该元素已禁用或未获得焦点。
  • 出于安全原因,浏览器可能会阻止对该元素的键盘输入。

;解决方案

有几种方法可以解决这个问题问题:

使用 WebDriverWait 和 ExpectedConditions:

如果元素暂时隐藏或被遮挡,请使用 WebDriverWait 和 ExpectedConditions 来等待元素可见且可单击。

使用executeScript():

如果元素被永久隐藏或遮挡,请使用 JavascriptExecutor 接口中的executeScript()方法来访问和操作该元素。

编辑样式属性:

如果元素由于CSS属性(例如“display:none”而隐藏),请使用executeScript()修改样式并使元素可见。

禁用 WebDriver 交互性检查(临时):

Firefox 功能 moz:webdriverClick 可以设置为 false 以暂时禁用 WebDriver交互性检查。这对于遗留测试可能是必要的。

具体案例:Facebook 注册

在提供的代码片段中,发生异常是因为“FirstName”字段具有随着每次页面加载而变化的动态 ID。要解决此问题,请使用动态定位器策略,根据元素的属性而不是 ID 来查找元素。

更新的代码片段:

WebDriver driver = new FirefoxDriver();
driver.get("https://www.facebook.com");
driver.findElement(By.xpath("//input[@name='firstname' and contains(@class,'inputtext')]")).sendKeys("testing it ");
登录后复制

以上是为什么我在将文本发送到 Facebook 输入字段时收到'org.openqa.selenium.ElementNotInteractableException”?的详细内容。更多信息请关注PHP中文网其他相关文章!

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