【问题标题】:Cypress unable to select elements in modal赛普拉斯无法在模态中选择元素
【发布时间】:2021-11-28 12:40:54
【问题描述】:

由于某种原因,赛普拉斯似乎无法与我的模态中的元素进行交互(无法点击我的元素)。 UI 提示我为什么会发生这种情况

这是我在使用cy.get('.modal-button') 时看到的。

cy.get('.modal-button').contains('No Template').click() 看起来像。但点击实际上并没有发生。 Cypress 没有给我任何错误信息,而是继续。

更多上下文: 我们使用 ng-bootstrap 作为模态。显示模态时有 0.5 秒的动画,但描述的所有动作都发生在 3 秒的 cy.wait 之后。我尝试在点击中使用{force: true},并尝试了其他选择器/包含,但这也无济于事。

它只是默默地失败: 就像点击发生一样继续前进。 (这是我尝试过的两种方法,我的实际类名与我在这里用于说明的不同)

【问题讨论】:

  • get 的默认超时时间是 4000 毫秒,除非您覆盖它。所以额外的 3 秒等待是除此之外的。根据您的屏幕截图,No Template 在您首先在左侧栏中选择了一个选项后似乎是嵌套的。在尝试获取no Template 按钮之前,您是否首先在左侧栏中选择了一个选项?另外,cyppres 抛出的错误是什么?它找不到元素,或者元素在影子dom中......?
  • 在这种情况下,有一个.active-midrow-button 类适用于以蓝色突出显示的选项no template。我首先尝试过,同样的事情发生了。它静默失败,没有错误。我添加了一个截图来说明。

标签: angular cypress


【解决方案1】:

您可以尝试使用.then()

   cy.get(".modal-button").then((el) => {
      if (el.text() == "No Template") {
        el.click({ force: true }); //el.trigger('click')
      }
    });

问题也可能与您使用的定位器有关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-23
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多