Javascript 如何使用cypress.io检查嵌套阴影元素

Javascript 如何使用cypress.io检查嵌套阴影元素,javascript,automated-tests,cypress,shadow-dom,Javascript,Automated Tests,Cypress,Shadow Dom,如何定位位于嵌套阴影DOM内的搜索框 到目前为止,我尝试了几种不同的方法来定位,下面是其中之一,但没有成功: 定位器: 实际代码: 测试运行程序中出现错误: 嵌套的shadow root使得很难确定应该在哪里添加.shadow()命令,但是您可以在(cypress.json)中全局启用shadow DOM搜索 包括阴影区 是否遍历阴影DOM边界,并在查询命令的结果中包含阴影DOM中的元素(例如cy.get()) cypress.json { ... includeShadowDom:

如何定位位于嵌套阴影DOM内的搜索框

到目前为止,我尝试了几种不同的方法来定位,下面是其中之一,但没有成功:

定位器:

实际代码:

测试运行程序中出现错误:

嵌套的shadow root使得很难确定应该在哪里添加
.shadow()
命令,但是您可以在(cypress.json)中全局启用shadow DOM搜索

包括阴影区

是否遍历阴影DOM边界,并在查询命令的结果中包含阴影DOM中的元素(例如cy.get())

cypress.json

{
  ...
  includeShadowDom: true
}

您得到的错误是什么?添加了错误屏幕截图。您是否尝试将
includeShadowDom:true
添加到cypress.json?这可能会节省您在每个级别添加
.shadow()
的时间。更新后,它现在可以工作了,您可以将它添加到您的答案中吗?顶部没有更多的阴影根。上面的解决方案不起作用,我也进行了测试。是的,我注意到了。从来没有测试过这么多的影子根!我们将检查并修改它。
class SearchComponents {
    static validateSearchBar() {
         cy.get(SDW_MAINAPP_G1)
        .shadow()
        .find(SDW_VOYAGEPANEL_G2B)
        .find(SDW_VESSELLIST_G3B)
        .find(SDW_VOYAGEFILTER_G4B1)
        .find(INP_SEARCH_VESSEL)
        .should('be.visible')
        .should('be.enabled')
    }
   //...
   }
{
  ...
  includeShadowDom: true
}