为了账号安全,请及时绑定邮箱和手机立即绑定

使用赛普拉斯从复杂的层次结构中获取元素

使用赛普拉斯从复杂的层次结构中获取元素

慕哥9229398 2023-03-18 17:46:15

我是赛普拉斯的新手。最近,我正在尝试获取网站中的文本变量并将元素推送到数组中。但是,我无法正确获取元素位置。我尝试了不同的方式,但get(), find()仍然未能获得CypressError: Timed out retryimg: Expected to find element:'.nav-link pr-0 d-none d-lg-block>.langSelector', but never found it


这是我的 html:


...

<div class="nav-link pr-0 d-none d-lg-block">

  <div id="langSelector">

  <a data-dir="AAA" href="/AAA/example"> AAA </a>

  <a data-dir="BBB" href="/BBB/example"> BBB </a>

  <a data-dir="CCC" href="/CCC/example"> CCC </a>

  </div>

</div>

...

这是我失败的尝试:


  cy.get('.nav-link pr-0 d-none d-lg-block > .langSelector').find('>a').each(($el) => {

          cy.wrap($el).invoke('text')

            .then(text => {

              exampleArray.push(text.trim())

            })

        })

另一个失败的尝试:


 cy.get('div > .langSelector > a').each(($el) => {

          cy.wrap($el).invoke('text')

          .then(text => {

            exampleArray.push(text.trim())

          })

      })

错误信息是一样的:CypressError: Timed out retryimg: Expected to find element:'.nav-link pr-0 d-none d-lg-block>.langSelector', but never found it任何想法都会有很大的帮助!感谢万!


查看完整描述

1 回答

?
郎朗坤

TA贡献1701条经验 获得超9个赞

langSelector不是一个类,所以它不应该.在选择器前面。它是一个id所以应该用 来选择#

尝试 cy.get('#langSelector > a')


作为旁注,最佳做法是在您的 html 中使用一个单独的属性来分配一个测试特定的 id(例如 data-tid、data-cy 等)并为您的测试引用它。


查看完整回答
反对 回复 3天前
  • 1 回答
  • 0 关注
  • 10 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信