@ cypress/ xpath( 齐声)
将 XPath 命令添加到 Cypress.io (英语) 测试跑道
用 npm 安装
npm install -D @cypress/xpath
用 Yarn 安装
yarn add @cypress/xpath --dev
那就在你的项目里加入 支持文件
require('@cypress/xpath');
使用
安装后 cy 对象将拥有 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);
});
});
注释 : 您可以使用 DevTools 控制台测试 XPath 表达式 $x(...) 函数,例如 $x('//div') 找到所有潜水员.
见 cypress/e2e/ spec.cy.js (英语)
当心 XPath // 陷阱
在 XPath 中,表达式 // 意味着非常具体的东西, 它可能不是你想的那样. 与共同的信念相反, //表示"文件中的任何地方"而不是"当前上下文中的任何地方". 例如:
cy.xpath('//body').xpath('//script');
你可能期望这能找到体内的所有脚本标记,但实际上,它在整个文档中找到了所有的脚本标记,而不只是体内的脚本标记! 你要找的是.//表示"当前节点的任何后人":
cy.xpath('//body').xpath('.//script');
同样的事情,在内部:
cy.xpath('//body').within(() => {
cy.xpath('.//script');
});
还有,看 智能代码补全
许可证
本项目的许可条件如下: 麻省理工学院许可证。 。 。 .