【问题标题】:Handling multiple shadow element in cypress在柏树中处理多个阴影元素
【发布时间】:2022-01-14 00:08:22
【问题描述】:

我正在尝试自动化具有多个阴影元素的屏幕。例如,我必须为名为“学生姓名”的文本字段设置数据。该字段必须遍历多个阴影元素。

cy.get('app-screen)
.shadow()
.find('app-toolbar')
.shadow()
.find('student-container')
.shadow()
.find('input[id="studentName"]')
.type("Viola");

有没有可以这样指定的替代方法:

cy.get('app-screen app-toolbar student-container input[id="studentName"]').type('Viola');

我为量角器找到了类似的解决方案。赛普拉斯是否有可用的解决方案,例如添加客户定位器? Protractor: Unable select input element inside a shadow DOM (Polymer) using by.deepCss('input')

谢谢

【问题讨论】:

    标签: cypress


    【解决方案1】:

    转到cypress.json 并写信。这可以确保您的所有 get 和 find 查询都会自动通过 shadow dom,而无需明确提及。

    includeShadowDom: true
    

    然后在你的测试中写:

    cy.get('app-screen).find('input[id="studentName"]').type("Viola")
    

    【讨论】:

    • 嗨,我按照您的建议更新了“cypress.json”,效果很好。但是,我希望声明是这样的。 cy.get('app-screen input[id="studentName"]').type("Viola");当我执行这个语句时,它说没有找到元素。
    • 你可以试试这个。我不确定这是否可行。假设序列和嵌套元素是正确的。 cy.get('app-screen > app-toolbar > student-container > input[id="studentName"]).type('voila')
    • 是的,我试过了。嵌套元素的顺序是正确的。我在 chrome 浏览器的控制台中使用 JavaScript 查询选择器进行了检查。但是,该步骤在运行 cypress 时失败,说明从未找到元素。
    • 是的,我就是这么想的。然后我想使用getfind 是我能想到的适用于这个用例的唯一方法。
    • 嗨,有没有其他选项可以在 'get' 下写入所有嵌套的阴影元素,而不在 cypress.json 中设置 'includeShadowDom: true'?
    猜你喜欢
    • 2021-01-27
    • 2022-11-24
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 2021-12-29
    • 2019-05-09
    • 1970-01-01
    • 2020-05-21
    相关资源
    最近更新 更多