安装插件 cypress-xpath
npm安装
npm install -D cypress-xpath
yarn安装
yarn add cypress-xpath --dev
将cypress-xpath导入项目 cypress/support/index.js
import 'cypress-xpath'
//or
require('cypress-xpath')
使用xpath定位
it('finds list items', () => {
cy.xpath('//ul[@class="todo-list"]//li')
.should('have.length', 3)
})
还可以将xpath链接到另一个命令
it('finds list items', () => {
cy.xpath('//ul[@class="todo-list"]')
.xpath('./li')
.should('have.length', 3)
})
与其他cy命令一样,它的作用域由cy.within()限定
it('finds list items', () => {
cy.xpath('//ul[@class="todo-list"]').within(() => {
cy.xpath('./li')
.should('have.length', 3)
});
})
使用陷阱
在XPath中,表达式//表示一些非常具体的东西,它可能与您所想的不一样。与人们普遍认为的相反,//的意思是“文件中的任何地方”,而不是“当前上下文中的任何地方”,例:
cy.xpath('//body')
.xpath('//script')
您可能期望它能找到正文中的所有脚本标记,但实际上,它能找到整个文档中的所有脚本标记,而不仅仅是正文中的脚本标记!你要找的是.//表达式,意思是“当前节点的任何后代”:
cy.xpath('//body')
.xpath('.//script')
同样适用于.within()
cy.xpath('//body').within(() => {
cy.xpath('.//script')
})