【发布时间】:2021-05-26 17:46:09
【问题描述】:
我需要单击下拉列表并滚动以按文本查找项目。
目前我知道该项目位于列表的底部,所以我可以这样做:
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() 可用于查找元素。
【问题讨论】:
-
你的任务让你对那个元素做什么动作?
-
我正在填写表格,所以我只需要在下拉列表中选择一个项目
-
选择通常需要 cy.select() docs.cypress.io/api/commands/select 所以你的情况是
cy.get('.ng-dropdown-panel-items').select(/test/i) -
好点,我试过了,但我发现我们的开发人员已经使用了 Angular。这是我在使用 select() 时遇到的错误:
cy.select() can only be called on a <select>. Your subject is a: <div class="ng-dropdown-panel-items scroll-host">...</div> -
我明白了。您能否将下拉菜单的 HTML 结构添加到帖子中,以便我们可以看到和想到一些东西?如果它是 div 中的下拉菜单,我想你可以使用
cy.get('.ng-dropdown-panel-items').focus().wait(1000).contains(/test/i).click()