我使用代码找到按钮:
getClearObjectsButton() {
cy.get('[class="ng-select ng-select-multiple ng-select-searchable ng-untouched ng-valid ng-select-focused ng-select-opened ng-select-top ng-dirty"]')
.children('[class="ng-select-container ng-has-value"]')
.children('[title="Clear all"]')
}
然后,我执行一些操作-例如单击,查看是否可见等。如果我在测试文件中直接拥有此代码,则所有工作正常。
register.getClearObjectsButton().click()
但是,如果我将辅助文件与创建的函数一起使用,则会出现标题中所示的错误。
cypress_runner.js:174495 TypeError: Cannot read property 'click' of undefined
at Context.<anonymous> (tests?p=cypress\integration\create_user\check_objects_selector.js-106:580)
{{1}}
您知道如何解决此问题吗?
答案 0 :(得分:1)
我对赛普拉斯还很陌生,但我建议您尝试以下操作:
1)最可能的问题/解决方案-“辅助文件”是否也已执行?我记得在调用cypress/support/commands.js
文件中定义的辅助函数时遇到了一些问题。是command.js是您提到的“辅助文件”吗?似乎您用register.getClearObjectsButton()
来调用它。什么是register
?如果将getClearObjectsButton
方法放入cypress/support/commands.js
文件中,则可以使用cy.getClearObjectsButton()
2)如果已执行,请尝试也在该辅助文件中执行单击。可以吗?
3)另外,如果您确定自己的方法已执行,那么我想您已经期望cypress .get
函数的产量保持“活动”状态,但事实并非如此。尝试将其保存在变量中,然后从您的getClearObjectsButton
方法返回。
答案 1 :(得分:0)
是,文件已执行。
import CreateUser from "C:/cypress-s/cypress/classes/CreateUser.spec.js";
describe('Check role selector', () => {
const register = new CreateUser();
it.only('clear field button', () => {
register.fillObject(0)
register.getClearObjectsButton().click()
})
})
我使用此文件中的函数进行其他测试,但从未遇到过此问题。
答案 2 :(得分:0)
另一种想法-也许这会对您有所帮助。
getClearObjectButton() {
cy.get('[class="ng-select ng-select-multiple ng-select-searchable ng-untouched ng-valid ng-select-focused ng-select-opened ng-select-top ng-dirty"]').children('[class="ng-select-container ng-has-value"]')
.children('[title="Clear all"]').click()
}
it.only('clear field button', () => {
register.fillObject(0)
register.getClearObjectButton()
})
工作正常,但是如果更改click()的位置,则会出现错误提示。
getClearObjectButton() {
cy.get('[class="ng-select ng-select-multiple ng-select-searchable ng-untouched ng-valid ng-select-focused ng-select-opened ng-select-top ng-dirty"]').children('[class="ng-select-container ng-has-value"]')
.children('[title="Clear all"]')
}
it.only('clear field button', () => {
register.fillObject(0)
register.getClearObjectButton().click()
})
答案 3 :(得分:0)
返回键:)
getClearObjectButton() {
rreturn cy.get('[class="ng-select ng-select-multiple ng-select-searchable ng-untouched ng-valid ng-select-focused ng-select-opened ng-select-top ng-dirty"]').children('[class="ng-select-container ng-has-value"]')
.children('[title="Clear all"]')
}
it.only('clear field button', () => {
register.fillObject(0)
register.getClearObjectButton().click()
})