使用赛普拉斯自动化工具无法触发单击导航菜单

时间:2019-11-19 16:45:45

标签: javascript cypress

我的网站上有一个导航栏,当我将鼠标悬停在导航栏上时,它会显示菜单列表。现在我遇到了一个问题,我无法单击其第四选项。我在下面给你例子。 如果我们运行以下代码,它将在其“管理”菜单中显示可用菜单的列表。

    cy.get('#Administrationlink > :nth-child(1)').trigger('mouseover')

但是当我运行这段代码时,它不会单击其第4个定位选项

   cy.get('#Administrationlink div > ul > li:eq(6)').click()

   cy.get('#Administrationlink div > ul > li').eq(6).click()

我也在尝试.contains等,但是没有用。始终出现以下错误。

  

未捕获到的SyntaxError:意外令牌'<'

Home | Adminstration | About Us
--------------------------------
     | Option 1      |
     | Option 2      |
     | Option 3      |
     | Option 4      |

这是导航栏。 它的结构是 ul => li-> a再次在此li下ul => li-> a 第一大ULLI的主页,管理部门,关于我们中有3个选项 然后,管理部门拥有LI,然后还有UL和LI用于选项1,2,3,4。

这有意义吗?

1 个答案:

答案 0 :(得分:2)

根据要测试的内容(悬停行为与导航本身),可能有助于强制单击conda之类的(不可见)项目,请参见https://docs.cypress.io/api/commands/click.html#Force-a-click-regardless-of-its-actionable-state

为了能够以可靠的方式(而不是列表排序)来定位导航项,我通常添加一个唯一的数据属性,然后通过该属性进行选择,例如cy.click({force: true})

以下是有关此方法的好书:https://kentcdodds.com/blog/making-your-ui-tests-resilient-to-change