Selenium WebDriver 在线程“主”org.openqa.selenium.ElementNotInteractableException 中抛出异常

2024-03-01

测试场景:尝试捕获并测试 Gmail 登录。

电流输出:Mozilla 实例打开。输入了用户名但是 WebDriver 代码未输入密码。

System.setProperty("webdriver.gecko.driver", "C:\\Users\\Ruchi\\workspace2\\SeleniumTest\\jar\\geckodriver-v0.17.0-win64\\geckodriver.exe");
FirefoxDriver  varDriver=new FirefoxDriver();

varDriver.get("http://gmail.com");  
WebElement webElem=  varDriver.findElement(By.id("identifierId"));
webElem.sendKeys("[email protected] /cdn-cgi/l/email-protection");
WebElement nextButton=varDriver.findElement(By.id("identifierNext"));
nextButton.click();

varDriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

WebElement wePass=varDriver.findElement(By.cssSelector(".rFrNMe.P7gl3b.sdJrJc.Tyc9J"));

wePass.sendKeys("test1");

元素不可交互异常

根据文档,元素不可交互异常是 W3C 异常,抛出该异常表明虽然元素存在于DOM Tree https://javascript.info/dom-nodes,它不处于可以交互的状态。

原因及解决方案:

的原因元素不可交互异常发生的次数可能很多。

  1. 暂时覆盖其他网页元素超过网页元素我们感兴趣的:

    在这种情况下,直接的解决方案就是诱导显式等待 i.e. WebDriver等待结合ExpectedCondition as invisibilityOfElementLocated如下:

    WebDriverWait wait2 = new WebDriverWait(driver, 10);
    wait2.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("xpath_of_element_to_be_invisible")));
    driver.findElement(By.xpath("xpath_element_to_be_clicked")).click();
    

    更好的解决方案是变得更细粒度,而不是使用ExpectedCondition as invisibilityOfElementLocated我们可以用ExpectedCondition as elementToBeClickable如下:

    WebDriverWait wait1 = new WebDriverWait(driver, 10);
    WebElement element1 = wait1.until(ExpectedConditions.elementToBeClickable(By.xpath("xpath_of_element_to_be_clicked")));
    element1.click();
    
  2. 永久覆盖其他网页元素超过网页元素我们感兴趣的:

    如果在这种情况下覆盖是永久性的,我们必须投射网络驱动程序实例为JavaScript执行器并执行如下点击操作:

    WebElement ele = driver.findElement(By.xpath("element_xpath"));
    JavascriptExecutor executor = (JavascriptExecutor)driver;
    executor.executeScript("arguments[0].click();", ele);
    

现在解决错误元素不可交互异常在这个特定的上下文中我们需要添加显式等待 i.e. WebDriver等待如下 :

你需要诱导一些wait为了Password字段在 HTML DOM 中正确呈现。您可以考虑配置一个显式等待为了它。以下是使用 Mozilla Firefox 登录 Gmail 的工作代码:

System.setProperty("webdriver.gecko.driver","C:\\Users\\Ruchi\\workspace2\\SeleniumTest\\jar\\geckodriver-v0.17.0-win64\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
String url = "https://accounts.google.com/signin";
driver.get(url);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
WebElement email_phone = driver.findElement(By.xpath("//input[@id='identifierId']"));
email_phone.sendKeys("[email protected] /cdn-cgi/l/email-protection");
driver.findElement(By.id("identifierNext")).click();
WebElement password = driver.findElement(By.xpath("//input[@name='password']"));
WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.elementToBeClickable(password));
password.sendKeys("test1");
driver.findElement(By.id("passwordNext")).click();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Selenium WebDriver 在线程“主”org.openqa.selenium.ElementNotInteractableException 中抛出异常 的相关文章

  • Java 中的 XPath 节点集

    我在 eclipse 中有这段代码 NodeSet nodes NodeSet xPath evaluate expression inputSource XPathConstants NODESET 它给我 NodeSet 上的编译时错误
  • JavaMail Gmail 问题。 “准备启动 TLS”然后失败

    mailServerProperties System getProperties mailServerProperties put mail smtp port 587 mailServerProperties put mail smtp
  • 如何在一行中将字符串数组转换为双精度数组

    我有一个字符串数组 String guaranteedOutput Arrays copyOf values values length String class 所有字符串值都是数字 数据应转换为Double QuestionJava 中
  • 在Windows上安装Java 11 OpenJDK(系统路径问题)

    Java 11 最近发布了 众所周知 这个版本没有安装文件 当然 要在没有安装程序的情况下安装 Java 我将系统设置 PATH 和 JAVA HOME 设置为解压缩 Java 11 的文件夹的地址 根据对类似问题的已接受回复建议 唯一的事
  • HDFS:使用 Java / Scala API 移动多个文件

    我需要使用 Java Scala 程序移动 HDFS 中对应于给定正则表达式的多个文件 例如 我必须移动所有名称为 xml从文件夹a到文件夹b 使用 shell 命令我可以使用以下命令 bin hdfs dfs mv a xml b 我可以
  • 如何为 Gson 编写自定义 JSON 反序列化器?

    我有一个 Java 类 用户 public class User int id String name Timestamp updateDate 我收到一个包含来自 Web 服务的用户对象的 JSON 列表 id 1 name Jonas
  • Java 页面爬行和解析之 Crawler4j 与 Jsoup

    我想获取页面的内容并提取其中的特定部分 据我所知 此类任务至少有两种解决方案 爬虫4j https github com yasserg crawler4j and Jsoup http jsoup org 它们都能够检索页面的内容并提取其
  • Prim 的迷宫生成算法:获取相邻单元格

    我基于 Prim 算法编写了一个迷宫生成器程序 该算法是 Prim 算法的随机版本 从充满墙壁的网格开始 选择一个单元格 将其标记为迷宫的一部分 将单元格的墙壁添加到墙壁列表中 While there are walls in the li
  • Clip 在 Java 中播放 WAV 文件时出现严重延迟

    我编写了一段代码来读取 WAV 文件 大小约为 80 mb 并播放该文件 问题是声音播放效果很差 极度滞后 你能告诉我有什么问题吗 这是我的代码 我称之为doPlayJframe 构造函数内的函数 private void doPlay f
  • 在具有相同属性名称的不同数据类型上使用 ModelMapper

    我有两节课说Animal AnimalDto我想用ModelMapper将 Entity 转换为 DTO 反之亦然 但是对于具有相似名称的一些属性 这些类应该具有不同的数据类型 我该如何实现这一目标 动物 java public class
  • 检查 Android 手机上的方向

    如何查看Android手机是横屏还是竖屏 当前配置用于确定要检索的资源 可从资源中获取Configuration object getResources getConfiguration orientation 您可以通过查看其值来检查方向
  • 使用 AWS Java SDK 为现有 S3 对象设置 Expires 标头

    我正在更新 Amazon S3 存储桶中的现有对象以设置一些元数据 我想设置 HTTPExpires每个对象的标头以更好地处理 HTTP 1 0 客户端 我们正在使用AWS Java SDK http aws amazon com sdkf
  • 将多模块 Maven 项目导入 Eclipse 时出现问题 (STS 2.5.2)

    我刚刚花了最后一个小时查看 Stackoverflow com 上的线程 尝试将 Maven 项目导入到 Spring ToolSuite 2 5 2 中 Maven 项目有多个模块 当我使用 STS 中的 Import 向导导入项目时 所
  • 将 JSON 参数从 java 发布到 sinatra 服务

    我有一个 Android 应用程序发布到我的 sinatra 服务 早些时候 我无法读取 sinatra 服务上的参数 但是 在我将内容类型设置为 x www form urlencoded 之后 我能够看到参数 但不完全是我想要的 我在
  • 如何在 Maven 中显示消息

    如何在 Maven 中显示消息 在ant中 我们确实有 echo 来显示消息 但是在maven中 我该怎么做呢 您可以使用 antrun 插件
  • Android JNI C 简单追加函数

    我想制作一个简单的函数 返回两个字符串的值 基本上 java public native String getAppendedString String name c jstring Java com example hellojni He
  • Java - 不要用 bufferedwriter 覆盖

    我有一个程序可以将人员添加到数组列表中 我想做的是将这些人也添加到文本文件中 但程序会覆盖第一行 因此这些人会被删除 如何告诉编译器在下一个空闲行写入 import java io import java util import javax
  • 将 JTextArea 内容写入文件

    我在 Java Swing 中有一个 JTextArea 和一个 提交 按钮 需要将textarea的内容写入一个带有换行符的文件中 我得到的输出是这样的 它被写为文件中的一个字符串 try BufferedWriter fileOut n
  • 中断连接套接字

    我有一个 GUI 其中包含要连接的服务器列表 如果用户单击服务器 则会连接到该服务器 如果用户单击第二个服务器 它将断开第一个服务器的连接并连接到第二个服务器 每个新连接都在一个新线程中运行 以便程序可以执行其他任务 但是 如果用户在第一个
  • Swagger/Openapi-Annotations:如何使用 $ref 生成 allOf?

    我正在生成 Rest 端点 包括添加OpenAPI Swagger对生成的代码进行注释 虽然它对于基本类型运行得很好 但我在自定义类方面遇到了一些问题 现在我有很多自定义类的重复架构条目 使用 Schema 实现 MyClass class

随机推荐

  • 如何在 Java 中将 long 变量更改为时间戳?

    如何将长整型变量更改为时间戳变量 我可以将其转换为字符串 但我需要将其转换为时间戳才能在数据库中使用它 Timestamp 扩展了 java util Date 并且它有一个接受 long 的构造函数 像这样 import java sql
  • 如何在android中注册低电量广播接收器?

    我想注册低电量广播 如果电池状态达到某种程度 我想收到警报 如果您有任何想法请帮助我 您需要注册一个BroadcastReceiver for ACTION BATTERY LOW http developer android com re
  • Mathematica:未评估、延迟、保留、HoldForm、HoldAllComplete、等等

    我对所有旨在以某种方式阻止评估的内置 Mathematica 函数感到困惑 Unevaluated Defer Hold 以及超过六种形式Hold Mathematica 文档只是单独解释每个函数 而没有解释为什么选择其中一个函数 谁能对所
  • 在 ECMA 第 3 阶段使用提案在统计上是否安全?

    背景 我指的是 操作员 许多人喜欢并支持执行以下操作的想法 const obj hello 1 const obj2 world 2 obj Problem 与典型的语法相比 我个人更喜欢这种语法Object assign但最近当我开始在我
  • 如何使用 jQuery .ajax 来执行我的表单操作

    我改变了 php 和 jQuery 的编码风格 但是我的注册 reg form company bind submit function fancybox showActivity ajax type POST cache false ur
  • jQuery:调用后更改插件选项

    我自己制作了一个插件 用于在使用 jquery ui 对话框时设置一些东西 而不是调用 popup dialog options 我用这个 popup dialogPlugin options 并且dialogPlugin会调用 dialo
  • 将存储过程输入参数分配给局部变量是否有助于优化查询?

    我有一个需要 5 个输入参数的存储过程 该过程有点复杂 大约需要 2 分钟才能执行 我正在优化查询 所以 我的问题是 将输入参数分配给局部变量然后在过程中使用局部变量是否总是有帮助 如果是这样 它有什么帮助 我不会尝试解释参数嗅探的完整细节
  • 在 Go 中实现 Merkle 树数据结构

    我目前正在尝试在 Go 中实现默克尔树数据结构 基本上 我的最终目标是存储一小组结构化数据 最大 10MB 并允许该 数据库 轻松与分布在网络上的其他节点同步 请参阅相关资料 我已经在 Node 中相当有效地实现了这一点 因为没有类型检查
  • 访问 iPhone 地址簿中的人员信息

    我需要让用户有机会从地址簿中选择电话号码 所以我以苹果手册为例 但它只需要第一个号码 我如何让用户可以选择地址簿中的一个号码 IBAction adressBook UIButton sender ABPeoplePickerNavigat
  • 如何防止 CSS 渲染阻止我的网站?

    我正在尝试优化移动网页的加载速度 为此我正在使用该网站 https developers google com speed pagespeed insights https developers google com speed pages
  • 递归替换字典中的字符

    如何更改所有点 下划线 在字典的键中 给定一个任意嵌套的字典 我尝试的是编写两个循环 但随后我将仅限于两级嵌套字典 This brown muffins 5 green pear 4 delicious apples green apple
  • MySQL 可以检查该文件是否存在吗?

    我有一个表 其中保存硬盘上真实文件的相对路径 例如 SELECT FROM images gt id path 1 files 1 jpg 2 files 2 jpg 我可以创建一个查询来选择指向不存在文件的所有记录吗 我需要通过 MySq
  • 如何在 angular2/ionic 2 typescript 应用程序中使用 Numeral.js 库?

    我已经成功地在我的 angularJs 1 x 应用程序中使用 Numeral js 库以不同的格式格式化我的数字 这就是我使用 angular1 过滤器的方式 过滤器 js filter numeral function return f
  • MPI 运行错误“导致所有级别集体中止”

    我正在尝试使用 C 中的 MPI 编写并行程序 但是 当我运行我的程序时 我收到该消息并且我的程序被终止 我不知道该错误消息的原因 警告 无法读取 mpd hosts 或未提供主机列表 MPI 作业将仅在当前计算机上运行 解决方案正在启动
  • 配置文件标记为重复的 Exceptionless 包

    不确定我的项目发生了什么 但是当我尝试运行它时 我收到了错误消息Could not load file or assembly Exceptionless Mvc or one of its dependencies Eceptionles
  • Git:如何分析具有多文件历史记录的代码?

    我即将在现有项目中移动大量文件 在执行此操作之前 我想牢牢掌握一些用于分析具有多文件历史记录的代码的技术 如何使用git来询问 这行代码是从哪里来的 当内容在其生命周期内移动过多个文件时 我知道 git 不会明确地跟踪重命名 有充分的理由
  • 范围交集/并集

    我正在开发一种编程语言 我想为其提供Range数据类型 目前不像通常那样是一个成对的列表int values x y 的约束条件是x lt y 我说不像通常那样 因为通常范围只是一对 但在我的情况下 它超过 例如允许 1 to 5 7 to
  • jQuery:测试复选框是否未被选中

    我很难弄清楚这一点 我有两个复选框 将来会有更多 checkSurfaceEnvironment 1 checkSurfaceEnvironment 2 基本上 我想编写一个 if 语句并测试其中一个是否已检查而另一个是否未检查 完成以下任
  • 如何在 &[u8] 切片中找到子序列?

    我有一个 u8 对二进制缓冲区进行切片 我需要解析它 但是我想使用很多方法 例如str find 似乎不适用于切片 我已经看到我可以通过缓冲区切片和我的模式来隐藏str通过使用from utf8 unchecked 但这似乎有点危险 而且也
  • Selenium WebDriver 在线程“主”org.openqa.selenium.ElementNotInteractableException 中抛出异常

    测试场景 尝试捕获并测试 Gmail 登录 电流输出 Mozilla 实例打开 输入了用户名但是 WebDriver 代码未输入密码 System setProperty webdriver gecko driver C Users Ruc