热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

无法使用SeleniumJS在VueJS中单击下拉测试网站

我正在尝试使用Selenium和Javascript测试VueJS网站;我目前正在尝试简单地点击一个下拉菜单,但我所有的尝试都会导致ElementNo

我正在尝试使用 Selenium 和 Javascript 测试 VueJS 网站;我目前正在尝试简单地点击一个下拉菜单,但我所有的尝试都会导致

ElementNotInteractableError: element not interactable
(Session info: chrome=89.0.4389.90)

我尝试了很多不同的方式和 css 或 xpath 选择,包括

A) 快速检查

const elem = await driver.findElement(
By.css(
'div.mb2:first-of-type > div.multiselect.col-12.border:first-of-type > div.multiselect__tags > span.multiselect__placeholder',
),
)
await elem.click()

B)很好地检查一切

await driver.wait(until.elementLocated(By.css('div[data-fetch-key="1"] > div.multiselect.col-12.border > div.multiselect__tags')), timeout)
await driver.wait(until.elementIsVisible(element), timeout)
await driver.wait(until.elementIsEnabled(element), timeout)
await element.click()

C)设置display:block一切

const disabledList = await driver.findElements(By.css('[style*="display:none"]'))
for (elem of disabledList) {
try {
await driver.executeScript(
"arguments[0].setAttribute('style', 'display:block !important; visibility: visible !important; opacity: 1 !important; position:initial !important')",
elem,
)
elem.click()
} catch (error) {
console.log('---------broken but still goes on-------------', error)
}
}

VueJS 模板以


有人可以告诉我为什么这个元素不应该是可交互的吗?它工作的唯一方法是使用 x 和 y 坐标进行单击,但由于它是一个下拉列表,因此它会打开,我无法使用坐标来选择特定选项(因为它们可以更改顺序和数量)。

更新:经过询问和搜索,我发现前端网站使用了vue-multiselect插件。

更新 2:我尝试重建整个测试,但这次使用cypress和cypress-xpath并且它有效。我错过了一些东西,但我不明白。

更新 3:使用 cypress 处理 iFrame 真的很困难,我需要它;也许我会切换回 selenium,但我绝对需要解决这个问题,我不明白为什么这些元素被认为是不可交互的。


推荐阅读
  • Node.js 教程第五讲:深入解析 EventEmitter(事件监听与发射机制)
    本文将深入探讨 Node.js 中的 EventEmitter 模块,详细介绍其在事件监听与发射机制中的应用。内容涵盖事件驱动的基本概念、如何在 Node.js 中注册和触发自定义事件,以及 EventEmitter 的核心 API 和使用方法。通过本教程,读者将能够全面理解并熟练运用 EventEmitter 进行高效的事件处理。 ... [详细]
  • 在Java中,匿名函数作为一种无名的函数结构,无法独立调用;而在JavaScript中,不仅有类似的匿名函数,还有立即执行函数(IIFE)和闭包等高级特性。立即执行函数同样基于匿名函数实现,但会在定义时立即执行,而闭包则通过嵌套函数来捕获外部变量,实现数据封装和持久化。这些不同的函数形式在实际开发中各有应用场景,理解其特点有助于更好地利用语言特性进行编程。 ... [详细]
  • 计算 n 叉树中各节点子树的叶节点数量分析 ... [详细]
  • 本项目在Java Maven框架下,利用POI库实现了Excel数据的高效导入与导出功能。通过优化数据处理流程,提升了数据操作的性能和稳定性。项目已发布至GitHub,当前最新版本为0.0.5。该项目不仅适用于小型应用,也可扩展用于大型企业级系统,提供了灵活的数据管理解决方案。GitHub地址:https://github.com/83945105/holygrail,Maven坐标:`com.github.83945105:holygrail:0.0.5`。 ... [详细]
  • 本题库精选了Java核心知识点的练习题,旨在帮助学习者巩固和检验对Java理论基础的掌握。其中,选择题部分涵盖了访问控制权限等关键概念,例如,Java语言中仅允许子类或同一包内的类访问的访问权限为protected。此外,题库还包括其他重要知识点,如异常处理、多线程、集合框架等,全面覆盖Java编程的核心内容。 ... [详细]
  • 【前端开发】深入探讨 RequireJS 与性能优化策略
    随着前端技术的迅速发展,RequireJS虽然不再像以往那样吸引关注,但其在模块化加载方面的优势仍然值得深入探讨。本文将详细介绍RequireJS的基本概念及其作为模块加载工具的核心功能,并重点分析其性能优化策略,帮助开发者更好地理解和应用这一工具,提升前端项目的加载速度和整体性能。 ... [详细]
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
  • 利用 JavaScript 实现定时任务的高效执行方法(代码可直接复用) ... [详细]
  • JVM参数设置与命令行工具详解
    JVM参数配置与命令行工具的深入解析旨在优化系统性能,通过合理设置JVM参数,确保在高吞吐量的前提下,有效减少垃圾回收(GC)的频率,进而降低系统停顿时间,提升服务的稳定性和响应速度。此外,本文还将详细介绍常用的JVM命令行工具,帮助开发者更好地监控和调优JVM运行状态。 ... [详细]
  • 探索JavaScript倒计时功能的三种高效实现方法及代码示例 ... [详细]
  • 本文探讨了如何高效利用 JavaScript 中的 `filter` 方法进行数据筛选。`filter` 方法能够创建一个包含通过测试的新数组,而不改变原始数组。其基本语法为:`原数组.filter((元素, 索引, 原数组) => { 筛选条件 })`。例如,可以通过 `filter` 方法从一个对象数组中筛选出符合条件的对象,生成新的数组以供进一步处理。 ... [详细]
  • 本文深入探讨了 `ExpressionChangedAfterItHasBeenCheckedError` 错误的原因及其解决方案。通过分析 Angular 的变更检测机制,详细解释了该错误的发生条件,并提供了多种有效的应对策略,帮助开发者在实际开发中避免这一常见问题。 ... [详细]
  • Python 数据分析领域不仅拥有高质量的开发环境,还提供了众多功能强大的第三方库。本文将介绍六个关键步骤,帮助读者掌握 Python 数据分析的核心技能,并深入探讨六款虽不广为人知但却极具潜力的数据处理库,如 Pandas 的替代品和新兴的可视化工具,助力数据科学家和分析师提升工作效率。 ... [详细]
  • 这篇文章将揭示 Vue 和 React 组件库中五个鲜为人知的强大工具。这些工具均以纯 JavaScript 实现,功能卓越。其中,async-validator 是一个数据验证插件,不仅预置了 URL 和电子邮件的验证规则,还支持异步验证功能。 ... [详细]
  • 本文深入探讨了 JavaScript 中 `let` 关键词的特性和应用场景。与 `var` 不同,`let` 的作用域限制在代码块内,而 `var` 的作用域则限定在函数内部。此外,`let` 声明不会发生变量提升,并且在同一作用域内不允许重复声明同一变量。通过具体的示例和分析,本文详细解释了这些特性如何影响代码的可读性和维护性。 ... [详细]
author-avatar
乳酪杳杳
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有