我无法在cypress测试中与日期选择器(弹出窗口)交互。
我在每个div类上都尝试了.find()和.get(),但每次 Timed out retrying after 4000ms: Expected to find element: .cdk-overlay-container, but never found it
这是我的测试代码:
cy.get('#signup-step-pers-details').within(() => {
cy.get('[name="firstName"]').type(user.firstName)
.get('[name="surname"]').type(user.lastName)
.get('#select-gender').click()
.get('.ng-dropdown-panel-items').contains(user.gender, {matchCase: false}).click()
.get('#input-dateOfBirth').click()
.find('.owl-dt-popup').click()
.get('.owl-calendar-year').contains(2002).click()
我试着增加一些等待时间,但也没用。
3条答案
按热度按时间r8uurelv1#
@kkhan是正确的,Angular 日期时间选择器在
cdk-overlay-container
在文件的底部。有关布局的更多详细信息:
使用
cy.get('#signup-step-pers-details').within(() => {
将内部命令限制到dom的该部分,但owl-date-time-container
这是不可能的。您可以使用这种方法来帮助cypress如何临时从cy.within()中转义
注意我用过
.owl-dt-control-period-button
这对于当前版本的angular date-time picker是正确的,但是您可能有一个需要.owl-calendar-year
.brjng4g32#
这个序列
希望在dateofbirth控件中找到日期弹出窗口。
你可能只需要
大体上你看
cy.get()
对于每个项目,不要像您所做的那样链接所有的get。这仍然有效,因为.get()
总是从开始搜索cy.root()
,设置为#signup-step-pers-details
由.within()
.但是
.find()
不同的是,它从上一个主题开始搜索,这是dob控件。我要补充的是,如果您希望弹出的日期实际上在dob输入中,那么
cdk-overlay-container
在弹出窗口可见时添加,位于<body></body>
标记(在devtools中查看)。093gszye3#
你的使用方法
contains
很好,但是您可以使用另一种语法来选择日期: