我的网站上有一个导航栏,当我将鼠标悬停在导航栏上时,它会显示菜单列表。现在我遇到了一个问题,我无法单击其第四选项。我在下面给你例子。 如果我们运行以下代码,它将在其“管理”菜单中显示可用菜单的列表。
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
第一大UL
在LI
的主页,管理部门,关于我们中有3个选项
然后,管理部门拥有LI
,然后还有UL和LI用于选项1,2,3,4。
这有意义吗?
答案 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