首页 > 解决方案 > 在元素中查找元素

问题描述

我正在尝试在特定元素中查找元素。

我的 HTML 结构是这样的:

<div>
     <label>test</label>
     <div>
          <a>testlink</a>
          <input type='text'></input>
          <textarea></textarea>
     </div>
</div>

我有基于其文本的标签,并且我试图在其兄弟下获取输入。我最初是想对其进行硬编码,但后来注意到我们有时在兄弟 div 下有一个额外的层,就像这样。

<div>
     <label>test</label>
     <div>
          <div>
              <a>testlink</a>
              <input type='text'></input>
              <textarea></textarea>
          </div>
     </div>
</div>

我尝试过的是:

const labelElement = await Selector('label').withText('test')
const inputField = labelElement.sibling('div').find('input').withAttribute('type', 'text')

问题是我要找回页面上的所有输入,而不仅仅是这个。我想这就是find所做的。

有没有办法只获得我需要的输入?

标签: typescripttestingcss-selectorsautomated-teststestcafe

解决方案


Selector.sibling()返回元素Selector.find()返回节点。两者都可以返回不止一个“东西”。

我会尝试使用Selector.nth(),例如:

const labelElement = await Selector('label').withText('test')
const inputField = labelElement.sibling('div').nth(0).find('input').withAttribute('type', 'text')

推荐阅读