Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Cypress:如何滚动下拉菜单来查找项目

Cypress:如何滚动下拉菜单来查找项目
EN

Stack Overflow用户
提问于 2021-05-18 09:40:39
回答 4查看 1.1K关注 0票数 1

我需要单击下拉列表并滚动以按文本查找项目。

目前,我知道该项目在列表的底部,所以我可以这样做:

cy.get('.ng-dropdown-panel-items').scrollTo("bottom").contains(/test/i).click()

这是有效的,但如果项目移动,不再在底部,这将打破。

我尝试过scrollIntoView,但没有成功:

cy.get('.ng-dropdown-panel-items').contains(/test/i).scrollIntoView().click()

cy.get('.ng-dropdown-panel-items').scrollIntoView().contains(/test/i).click()

有人知道我怎么做吗?

更新:选项列表是动态生成的(并非所有选项最初都在DOM中),因此需要滚动到底部才能获得所有选项。一旦所有选项都可用,就可以使用.contains()来查找元素。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-05-19 11:46:37

虚拟模式中的Angular ng-select处理起来相当棘手。

它的list是虚拟的,这意味着它一次只有DOM中的一些项,所以您不能选择它们并遍历它们。

您可以递归地扫描选项列表并使用.type({downarrow})将新选项移动到DOM中(这是用户与之交互的一种方式)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
it('selects an option in a virtual-scroll ng-select', () => {

  cy.visit('https://ng-select.github.io/ng-select#/virtual-scroll')

  cy.get('ng-select').click();                    // open the dropdown panel

  cy.get('.ng-option')
    .should('have.length.gt', 1);                 // wait for the option list to populate

  function searchForOption(searchFor, level = 0) {

    if (level > 100) {                                         // max options to scan
      throw 'Exceeded recursion level'                         // only useful for 100's
    }                                                          // not 1000's of options 

    return cy.get('ng-select input')
      .then($input => {
        const activeOptionId = $input.attr('aria-activedescendant') // highlighted option
        const text = Cypress.$(`#${activeOptionId}`).text()         // get it's text
        if (!text.includes(searchFor)) {                            // not the one?
          cy.wrap($input).type('{downarrow}')                       // move the list
          return searchForOption(searchFor, level + 1)              // try the next
        }
        return cy.wrap(Cypress.$(`#${activeOptionId}`))
      })
  }

  searchForOption('ad et natus qui').click();             // select the matching option

  cy.get('.ng-value')
    .should('contain', 'ad et natus qui');                // confirm the value 

})

请注意,递归可能会占用大量内存,并且可以对此代码进行一些优化。

票数 2
EN

Stack Overflow用户

发布于 2021-05-18 09:54:51

在大多数情况下,您需要cy.get().select,例如:

cy.get('.ng-dropdown-panel-items').select(/test/i)

票数 1
EN

Stack Overflow用户

发布于 2021-05-18 13:23:58

您可以使用each()遍历下拉元素,当您找到所需的文本时,创建一个click()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cy.get('span.ng-option-label.ng-star-inserted').each(($ele) => {
  if($ele.text() == 'desired text') {
    cy.wrap($ele).click({force: true})
  }
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67583714

复制
相关文章
windows 桌面GUI自动化- 16.pywinauto 鼠标操作与滚动列表
上海-悠悠
2023/09/11
8050
windows 桌面GUI自动化- 16.pywinauto 鼠标操作与滚动列表
来聊聊桌面图形界面的自动化和采集
如今的计算机软件形态,已被 Web 占据大半,基本上我们能使用到的产品,都能由一个网站来提供服务。
州的先生
2021/07/20
2.3K0
pywinauto桌面应用自动化入门篇
本案例因为start方法无法启动应用程序,所以我这里使用了os.system去启动的应用程序
懿曲折扇情
2022/10/28
5.8K0
pywinauto桌面应用自动化入门篇
你有什么事是当程序员之后才懂的?
大家好,我是网管,今天咱们聊点轻松的。谈谈大家当初为什么选做程序员,以及做了程序员后有哪些事情是跟自己当初选择这个职业前想的完全不一样的。
KevinYan
2023/08/21
1610
你有什么事是当程序员之后才懂的?
laydate插件实现时间选择器
layDate 在 layui 2.0 的版本中迎来一次重生。无论曾经它给你带来过多么糟糕的体验,从今往后,所有的旧坑都将弥合。全面重写的 layDate 包含了大量的更新,其中主要以:年选择器、年月选择器、日期选择器、时间选择器、日期时间选择器 五种类型的选择方式为基本核心,并且均支持范围选择(即双控件)。内置强劲的自定义日期格式解析和合法校正机制,含中文版和国际版,主题简约却又不失灵活多样。由于内部采用的是零依赖的原生 JavaScript 编写,因此又可作为独立组件使用。毫无疑问,这是 layui 的虔心之作
别团等shy哥发育
2023/02/25
2.2K0
laydate插件实现时间选择器
Spring 当一个接口多个实现时,怎么注入
代码如下 Data.java package cn.lpe234.demo; /** * Created by lpe234 on 2017/9/26. */ public interface Data { void out(); } AData.java package cn.lpe234.demo; import org.springframework.stereotype.Component; /** * Created by lpe234 on 2017/9/26. */ @S
lpe234
2020/07/27
4400
PC端自动化测试(三)
在时钟附近有表示正在运行的应用程序的图标,也就是「系统托盘」,也被称为「通知区域」。
zx钟
2020/04/08
1.4K0
Vue 用Vant实现时间选择器
1.查看Vant官网https://youzan.github.io/vant/#/zh-CN/datetime-picker
honey缘木鱼
2019/10/26
4.1K0
选择很多,怎么才叫“对”
这段时间,我拉黑了一些群成员,因为他们问的问题很low。问我是不是前端做的久了,不容易做到管理?我直接回复是的。跟我说什么,要不就去学后端,后端更容易转管理什么的。我说确实如此,然后我就不想再跟他说任何一句话,直接拉黑了。他来这里干什么?这么想做管理,这么想管人,这么想当领导,这么不想写代码,那直接去学企业管理之类的嘛,这种人我看他前端后端都不适合。 选择那么多,怎么才叫对?选错了怎么办?有时在内心深处,难于选择是因为想要逃避。正确的路啊,真是太TM难走了,有没有好走一点的?我,呵呵 前端,后端,UI,交互
web前端教室
2018/02/06
7560
pywinauto自动化操作桌面程序2021.11.8
1、打开程序 2、定位窗口 3、定位控件 4、对控件进行填写、勾选、点选、点击等操作了。 from pywinauto.application import Application import pyautogui import time import pandas #打开指定的应用程序 #1.打开应用: app = Application(backend="uia") #2.定位软件窗口 #一定要等待1秒,要不让太快回出错 time.sleep(1) dlg = app.connect(title_r
用户7138673
2022/09/22
7210
windows GUI自动化怎么做
最近在搞SAP的自动化。因为公司没考虑预算,不能用RPA。 首先用SAP自带的录制工具,不太行,各种弹框没法处理。 思来想去,打算用python来整。先用tracker来录制,创建业务流程还好,但是一旦要处理弹框,上传附件,就有点吃力了。 然后用了python的一些库来对付。 pyperclip 剪切板 pymouse 鼠標操作 pykeyboard 鍵盤曹祖 win32com win32gui pyautogui pywinauto uiautomation pywin32是一个Python库,为python提供访问Windows API的扩展,提供了齐全的windows常量、接口、线程以及COM机制等等。 pythoncom是pywin32库的一部分,运行脚本后,即可通过键盘的上下左右键控制鼠标移动了 pyhook 監聽輸入操作 pynput这个库让你可以控制和监控输入设备 这些库各有千秋,让我分別道来。
赵云龙龙
2022/12/01
2.3K0
pywinauto教程
转:pywinauto教程https://blog.csdn.net/weixin_40161673/article/details/83246861
墨文
2020/02/28
8.3K0
pywinauto教程
Win7 C盘过大,清理WinSxs
http://support.microsoft.com/kb/2852386
一见
2018/08/10
3.4K0
Win7 C盘过大,清理WinSxs
选择篇(040)-单击下面的html片段打印的内容是什么?
如果我们单击p,我们会看到两个日志:p和div。在事件传播期间,有三个阶段:捕获,目标和冒泡。默认情况下,事件处理程序在冒泡阶段执行(除非您将useCapture设置为true)。它从最深的嵌套元素向外延伸。
齐丶先丶森
2022/05/12
9670
什么样的程序才算是好的程序?
这确实在一定程度上说明你可能有些厉害,但多数情况下算不上好程序。举个例子,交换两个变量a,b的值:
用户6755376
2020/03/31
6030
只有程序猿才懂的道理
① 面试官:熟悉哪种语言? 应聘者:C# 面试官:知道什么叫类么? 应聘者:我这人实在,工作努力,不知道什么叫累。 面试官:知道什么是包? 应聘者:我这人实在,平常不带包,也不用公司准备了。 面试官:知道什么是接口吗? 应聘者:我这个人工作认真,从来不找借口偷懒。 面试官:知道什么是继承么? 应聘者:我是孤儿没什么可以继承的。 面试官:知道什么叫对象么? 应聘者:知道,不过我工作努力,上进心强,暂时还没有打算找对象。 面试官:知道多态么? 应聘者:知道,我很保守的。我认为让心爱的女人为了自已一时的快乐去堕胎
码神联盟
2018/04/02
6160
选择篇(039)-单击按钮时event.target是什么?
导致事件的最深嵌套元素是事件的目标。你可以通过event.stopPropagation停止冒泡
齐丶先丶森
2022/05/12
1.6K0
只有程序员才看懂的...
离职程序员之项目交接 动了一下看似很普通的一句代码 修复完bug,迎接周末的我 刚修复了Bug,我给老板演示的时候 正则表达式返回了了预期结果的时候 新手程序员第一次打出Hello World的时候 测试工程师责怪程序员低级bug的时候 刚从 C 转到 Python 时,经常忍不住,忍不住,忍不住就写了分号 在找 Bug …… 找到 Bug 了 写了半小时文档,想保存的时候却死机了 理想与现实的差距,理想和现实中的多线程 无需求文档,就要我去开发 没保
用户1631416
2018/04/12
5470
只有程序员才看懂的...
程序员才懂的浪漫
好,第一个程序完成,就是那么简单,在编写的时候注意缩进。一不小心可能就会造成错误。
大家一起学编程
2021/03/27
4770
点击加载更多

相似问题

仅当UIAlertView恰好出现时,才在其上单击“确定”

13

仅当报表中的数据出现时才订阅SSRS

20

仅当元素出现时,单击该元素

113

pywinauto坐标

11

jQuery:仅当单击父div时才使用fadeOut

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文