我在commands.js文件中编写了一些用于赛普拉斯自动化测试的功能,从中我只能调用一个功能,即“登录”,但无法调用另一个.js文件中的其他功能。赛普拉斯测试运行器显示
“ TypeError:
cy.FillAddCaseDetails
不是函数”
describe('Adding a Case on CSS Poratal ', function() {
before(function () {
cy.login() // calling login function successfully
})
it('open add case',function(){
cy.wait(9000)
cy.hash().should('contains','#/home')
cy.wait(['@GETcontentLoad']);
cy.wait(['@POSTcontentLoad']);
cy.get('[uib-tooltip="Add Case"]').click({force:true})
cy.log('clicked on Add case')
cy.wait(3000)
cy.get('[ng-click="lookup.cancel()"]').click({force: true})
cy.get('[ng-click="lookup.closeAddCase()"]').click({force: true})
cy.get('[uib-tooltip="Add Case"]').click({force:true})
cy.wait(3000)
cy.get('[ng-model="lookup.selectedPartner"]',{force:true})
.type(AddJob.JobData.Partner,{force: true})
cy.xpath('//input[@ng-model="lookup.selectedPartner"]')
.should('be.visible').then(() => {
cy.FillAddCaseDetails() // unable to call
cy.FillCustomerDetails() // unable to call
})
功能:
Cypress.Commands.add("FillCustomerDetails", () => {
cy.get('[ng-model="lookup.firstName"]')
.type(AddJob.JobData.FirstName, { force: true})
cy.get('[ng-model="lookup.lastName"]')
.type(AddJob.JobData.LastName, { force: true })
cy.get('[ng-model="lookup.customerPhone"]')
.type(AddJob.JobData.CustomerPhone, { force: true })
cy.get('[value="NEXT"]').click({ force: true })
})
预期:函数将被调用
实际:TypeError:cy.FillAddCaseDetails
不是函数
答案 0 :(得分:0)
从赛普拉斯文档中:https://on.cypress.io/typescript#Types-for-custom-commands
如果您将cy.dataCy命令添加到您的supportFile中,如下所示:
// cypress/support/index.js
Cypress.Commands.add('dataCy', (value) => {
return cy.get(`[data-cy=${value}]`)
})
然后,您可以通过在supportFile旁边创建一个新的TypeScript定义文件(在本例中为cypress / support / index.d.ts),将dataCy命令添加到全局Cypress Chainable接口(之所以称为命令,是因为命令链接在一起)。
// in cypress/support/index.d.ts
// load type definitions that come with Cypress module
/// <reference types="cypress" />
declare namespace Cypress {
interface Chainable {
/**
* Custom command to select DOM element by data-cy attribute.
* @example cy.dataCy('greeting')
*/
dataCy(value: string): Chainable<Element>
}
}
答案 1 :(得分:0)
在我的情况下,解决方案是重新启动cypress测试运行程序。
答案 2 :(得分:-2)
cy.xpath(“ // div [@ class ='c-navigatorItem-faceplate ng-scope ng-isolate-scope']”)。click(); 使用它是否有效,因为我收到TypeError cy.xpath不是函数