我如何在使用 xpath 时使用 find()

发布于 2025-01-10 11:23:29 字数 385 浏览 0 评论 0原文

我正在尝试在 iframe 中进行拖放操作,为此我需要在 find 中传递 xpath,因为我无法找到要在 cy.get() 中传递的唯一元素,

目前我正在尝试,

cy.xpath('//div[@class="unlayer-editor"]//iframe[@src]')
  .should("be.visible")
  .find('//div[@class = "blopockbder-coent-tols43 col-sm-12"]//div[@aria-describedby="t8ppy-tooltip-9"]')

但这不起作用

我正在使用 cypress 进行自动化

i am trying a drag and drop in an iframe and to do that i need to pass xpath in find since i cant find a unique element to pass in cy.get()

currently i am trying

cy.xpath('//div[@class="unlayer-editor"]//iframe[@src]')
  .should("be.visible")
  .find('//div[@class = "blopockbder-coent-tols43 col-sm-12"]//div[@aria-describedby="t8ppy-tooltip-9"]')

but this isnt working

i am using cypress for automation

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一瞬间的火花 2025-01-17 11:23:29

不是 xpath 方面的专家,但我认为 .find() 不能与 xpath 选择器混合。

需要尝试的两件事

// chain 2nd xpath in place of .find()

cy.get('div[class="unlayer-editor"] iframe[id="my-iframes-id"]')
  .should("be.visible")
  .xpath('//div[@class = "blopockbder-coent-tols43 col-sm-12"]//div[@aria-describedby="t8ppy-tooltip-9"]')

// use .within() instead of .find() (roughly equivalent)

cy.get('div[class="unlayer-editor"] iframe[id="my-iframes-id"]')
  .should("be.visible")
  .within(() => {
    cy.xpath('//div[@class = "blopockbder-coent-tols43 col-sm-12"]//div[@aria-describedby="t8ppy-tooltip-9"]')
  })

可能需要调整的其他事情

iframe 选择通常需要后续命令来获取其文档正文(参考 使用 iframe

// get the iframe document body any select within it

cy.get('div[class="unlayer-editor"] iframe[id="my-iframes-id"]')
  .its('0.contentDocument.body', { log: false }).should('not.be.empty')
  .within(() => {
    cy.xpath('//div[@class = "blopockbder-coent-tols43 col-sm-12"]//div[@aria-describedby="t8ppy-tooltip-9"]')
  })

路径中的一些类,例如col-sm-12 纯粹是面向显示的,如果您在不同的设备上测试,可能会有所不同。一旦测试有效,请尝试删除它们以使测试更加稳健。

Not an expert on xpath, but I think .find() can't be mixed with an xpath selector.

Two things to try

// chain 2nd xpath in place of .find()

cy.get('div[class="unlayer-editor"] iframe[id="my-iframes-id"]')
  .should("be.visible")
  .xpath('//div[@class = "blopockbder-coent-tols43 col-sm-12"]//div[@aria-describedby="t8ppy-tooltip-9"]')

or

// use .within() instead of .find() (roughly equivalent)

cy.get('div[class="unlayer-editor"] iframe[id="my-iframes-id"]')
  .should("be.visible")
  .within(() => {
    cy.xpath('//div[@class = "blopockbder-coent-tols43 col-sm-12"]//div[@aria-describedby="t8ppy-tooltip-9"]')
  })

Other things that might need adjusting

The iframe selection generally needs a follow-up command to get it's document body (ref Working with iframes)

// get the iframe document body any select within it

cy.get('div[class="unlayer-editor"] iframe[id="my-iframes-id"]')
  .its('0.contentDocument.body', { log: false }).should('not.be.empty')
  .within(() => {
    cy.xpath('//div[@class = "blopockbder-coent-tols43 col-sm-12"]//div[@aria-describedby="t8ppy-tooltip-9"]')
  })

Some of those classes in the path like col-sm-12 are purely display-oriented and may be different if you test at different devices. Once the test works, try removing them to make the test more robust.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文