我用柏树来测试一个网站。
当我在cy.origin()中使用xpath时,它不起作用。
it('t1', function() {
cy.origin(('BaseUrl'), () => {
cy.visit('/profile')
cy.xpath("//input[@name='username']").type('user')
cy.xpath("//input[@name='password']").type('pass')
cy.xpath("//button[@type='button']").click()
})
})
错误:
TypeError
cy.xpath is not a function
Note that it works correctly outside cy.origin()
发布于 2022-06-02 09:08:45
TLDR:坚持在cy.origin()
中使用标准的柏树命令。
这是当前cy.orgin()
的一个限制,实际上,任何自定义命令都必须特别处理,而cy.xpath()
是一个自定义命令。
请参阅回调限制
目前也不可能在回调中使用require()或动态导入()。由于这个限制,它不能在回调中使用npm包或其他第三方库,因为没有引用它们的机制。此功能将在Cypress.的未来版本中提供。 虽然第三方包严格不可用,但可以在cy.origin()回调之间重用自己的代码。解决方法是在前块中的次要源文件中创建自定义Cypress命令:
before(() => {
cy.origin('somesite.com', () => {
Cypress.Commands.add('clickLink', (label) => {
cy.get('a').contains(label).click()
})
})
})
it('clicks the secondary origin link', () => {
cy.origin('somesite.com', () => {
cy.visit('/page')
cy.clickLink('Click Me')
})
})
但是您不能在cy.xpath()
中使用这种模式,因为您目前需要require('cypress-xpath')
,而这不能在cy.origin()
中完成。
A解决方案--
/node_modules/cypress-xpath/src/index.js
/cypress/support/xpath.js
xpath.js
导入/cypress/support/commands.js
现在,cy.xpath()
将在任何测试中在cy.orgin()
中工作。
发布于 2022-06-01 20:55:55
检查非xpath是否有效。
cy.origin(('BaseUrl'), () => {
cy.visit('/profile')
cy.get("input[@name='username']").type('user')
...
如果没有,则可能没有正确设置experimentalSessionAndOrigin
标志。
https://stackoverflow.com/questions/72460992
复制相似问题