赛普拉斯按 ID/XPATH/名称单击元素?

Sta*_*art 14 automation cypress

我想通过 XPATH/ID 而不是默认的 cypress 定位器点击一个元素,这可能吗?

在 selenium 中,我可以通过 XPATH 使用 find 元素,例如:

d.findElement(By.id("category")).click();
Run Code Online (Sandbox Code Playgroud)

在赛普拉斯中,它就像:

cy.get('#hdtb-msb-vis > :nth-child(3) > .category').click()
Run Code Online (Sandbox Code Playgroud)

我可以通过ID点击吗? (它在硒中看起来更好!)

d.findElement(By.id("category")).click();
Run Code Online (Sandbox Code Playgroud)

VS

cy.get('#hdtb-msb-vis > :nth-child(3) > .category').click()
Run Code Online (Sandbox Code Playgroud)

Dan*_*any 23

Cypress v 11 更新

答案已过时,从版本 11 开始,Cypress 核心存储库就包含了这些xpath命令。

安装和使用是

@cypress/xpath

将 XPath 命令添加到 Cypress.io 测试运行程序

使用 npm 安装

npm install -D @cypress/xpath
Run Code Online (Sandbox Code Playgroud)

使用纱线安装

yarn add @cypress/xpath --dev
Run Code Online (Sandbox Code Playgroud)

然后包含在您项目的支持文件中

require('@cypress/xpath');
Run Code Online (Sandbox Code Playgroud)

使用

安装后,您的cy对象将具有xpath命令。

it('finds list items', () => {
  cy.xpath('//ul[@class="todo-list"]//li').should('have.length', 3);
});
Run Code Online (Sandbox Code Playgroud)


小智 17

在 Cypress 中,它的工作方式如下:

cy.get('button[id="category"]').click()
Run Code Online (Sandbox Code Playgroud)

请注意,我在这里仅以按钮为例,您应该将其替换为元素的标签:div、select、textarea 等...

  • 我投了反对票,因为问题是“使用 xpath”,并且接受的解决方案不使用 xpath。 (3认同)

soc*_*way 8

我认为,可以plug-in按照 Cypress 网站的建议添加一个,请参阅以下链接https://docs.cypress.io/plugins/#content。如果您参考自定义命令部分,您可以看到cypress-xpath哪些将您带到以下 github 链接 https://github.com/cypress-io/cypress-xpath

npm install -D cypress-xpath
Run Code Online (Sandbox Code Playgroud)

然后包含在您项目的 cypress/support/index.js 中

require('cypress-xpath')
Run Code Online (Sandbox Code Playgroud)

示例用法如下:

it('finds list items', () => {
  cy.xpath('//ul[@class="todo-list"]//li')
    .should('have.length', 3)
})
Run Code Online (Sandbox Code Playgroud)

请在安装插件并更新support/index.js文件后尝试。