【问题标题】:Cannot get dynamic dropdown element for Angular web application to be recognized in Cypress无法获取要在 Cypress 中识别的 Angular Web 应用程序的动态下拉元素
【发布时间】:2022-12-09 01:08:35
【问题描述】:

我有一个用 Angular 编写的 Web 应用程序,我正在尝试在 Cypress 中进行测试。我无法显示下拉菜单(在左图中圈出)。单击 3 个点时会显示下拉菜单。单击这些点时,我注意到“fui-datagrid-action-menu”中的类属性更改为显示包围的类属性。因此,在 Cypress 中,我尝试将类属性值设置为圈出的值。但是在运行我的测试时,我得到一个“预期找到元素:fui-dropdown,但从未找到它。”。下面是我的赛普拉斯代码的 sn-p。任何人都可以建议我做错了什么,或者是否有更好的方法来为这样的页面编码,其中 Angular 元素是动态的(即类属性更改等)。谢谢。

Web Page with Dropdown menu

    cy.get('fui-widget-body')
                    .within(() => {
                  cy.log('user found');
                  cy.get('fui-datagrid-action-menu').invoke('show').trigger('mouseover', {force: true});
                  cy.get('fui-datagrid-action-menu').invoke('show').click({ force: true });
                  cy.get('fui-datagrid-action-menu').invoke('attr', 'class', 'fui-datagrid-body-row-action-menu ' +
                    'ng-star-inserted fui-datagrid-action-menu-visible fui-datagrid-action-menu-open')
                    .within(($menu) => {
                      cy.get('fui-dropdown').invoke('show').click({ force: true });
....

【问题讨论】:

  • 这样的答案并不是真正的答案,但是使用动态类名(我必须测试反应应用程序)使用专用测试标签与对象交互要容易得多(我使用的是 data-cy 标签)。您或您的开发人员之一可以将它们添加到代码中吗?这是一种比依赖类名更可靠的测试方法。
  • 谢谢,开发团队正在努力添加数据标签。

标签: angular cypress


【解决方案1】:

发现了问题。在认真查看 Chrome 开发人员工具后,fui-dropdown 元素位于 fui-widget-body 之外。确定这一点并不容易,因为页面非常动态。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-21
    • 1970-01-01
    • 2022-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    相关资源
    最近更新 更多