【发布时间】:2019-07-03 18:48:38
【问题描述】:
我正在为一个 React 项目编写 Cypress 测试。我需要能够定位嵌套在<label> 内的<input>,以便我可以在该输入字段中输入。 <input>s 没有类 ID。
这是我的 HTML。
<label class="Input">
<div class="label">LABEL TEXT</div>
<input type="text">
</label>
我有许多输入格式与上面显示的完全相同的 HTML。它们仅在<div> 中的文本不同(即标签文本)。
我在标签标签中包围<input> 的原因是我希望用户能够通过单击标签文本或输入周围的任意位置来定位输入。仅仅为了赛普拉斯测试,向输入添加一个类对我们的代码库没有意义。我不能使用伪选择器,例如 :first cy.get('input[type="text"]:first'),因为我不希望我的测试在我向表单中添加额外的输入时中断。
我尝试了以下方法,但它尝试输入标签而不是输入。
cy.contains('LABEL TEXT')
.click()
.type('test')
即使它在 Cypress 测试运行器中将焦点放在了,它仍然会尝试输入 <div> 而不是焦点输入。
由于我对 Cypress 和断言非常陌生,所以我只能摸不着头脑。我对一个解决方案(如果可能的话)感兴趣,该解决方案不涉及仅仅为了赛普拉斯测试而向我的输入添加类。我希望这只是我的 CSS、Cypress 或断言知识的一个不足。
谢谢
【问题讨论】:
标签: html css reactjs cypress end-to-end