javascript - 如何使用 cypress 找到与特定对象对应的元素?
问题描述
我刚开始使用 Cypress,它引起了我的注意。但是,当我尝试更具体地测试我的测试时,我发现它很难。我试图自动化的页面有一个如下所示的表单:
<form>
<div class="mb-3">
<div class="MuiFormControl-root MuiTextField-root MuiFormControl-fullWidth">
<label class="MuiFormLabel-root MuiInputLabel-root MuiInputLabel-formControl MuiInputLabel-animated Mui-error Mui-error" data-shrink="false">Email address</label>
<div class="MuiInputBase-root MuiInput-root MuiInput-underline Mui-error Mui-error MuiInputBase-fullWidth MuiInput-fullWidth MuiInputBase-formControl MuiInput-formControl"><input aria-invalid="true" name="email" placeholder="Enter your email address" type="email" class="MuiInputBase-input MuiInput-input" value=""></div>
<p class="MuiFormHelperText-root Mui-error">Please enter a valid email address</p>
</div>
</div>
<div class="mb-3">
<div class="MuiFormControl-root MuiTextField-root MuiFormControl-fullWidth">
<label class="MuiFormLabel-root MuiInputLabel-root MuiInputLabel-formControl MuiInputLabel-animated Mui-error Mui-error" data-shrink="false">Password</label>
<div class="MuiInputBase-root MuiInput-root MuiInput-underline Mui-error Mui-error MuiInputBase-fullWidth MuiInput-fullWidth MuiInputBase-formControl MuiInput-formControl"><input aria-invalid="true" name="password" placeholder="Enter your password" type="password" class="MuiInputBase-input MuiInput-input" value=""></div>
<p class="MuiFormHelperText-root Mui-error">Password should have minimum of 8 chars.</p>
</div>
</div>
<div class="mb-3">
<div class="MuiFormControl-root MuiTextField-root MuiFormControl-fullWidth">
<label class="MuiFormLabel-root MuiInputLabel-root MuiInputLabel-formControl MuiInputLabel-animated" data-shrink="false">Confirm password</label>
<div class="MuiInputBase-root MuiInput-root MuiInput-underline MuiInputBase-fullWidth MuiInput-fullWidth MuiInputBase-formControl MuiInput-formControl"><input aria-invalid="false" name="password_confirm" placeholder="Confirm password" type="password" class="MuiInputBase-input MuiInput-input" value=""></div>
</div>
</div>
<div class="form-group pt-2 mb-4">By clicking the <strong>Create account</strong> button below you agree to our terms of service and privacy statement.</div>
<button class="MuiButtonBase-root MuiButton-root MuiButton-contained mb-5 MuiButton-containedPrimary MuiButton-containedSizeLarge MuiButton-sizeLarge" tabindex="0" type="submit"><span class="MuiButton-label">Create Account</span><span class="MuiTouchRipple-root"></span></button>
</form>
在这里,我有与“电子邮件”和“密码”字段相关的错误消息,这两个元素都在
在各自的下。我可以通过使用以下语句轻松验证错误消息:
cy.get('p').contains('Please enter a valid email address')
and
cy.get('p').contains('Password should have minimum of 8 chars')
但我想做的是,获取元素并找到孩子
我的 div 元素,然后获取我的文本
元素。我为什么要这样做是为了确保我尝试验证的错误消息实际上对应于我的测试元素。
我怎样才能实现它?提前致谢!
解决方案
您可以通过从帮助文本中遍历 DOM 来做到这一点:
cy.get("p")
.contains("Please enter a valid email address")
.then(($el) => {
expect($el.siblings("label").text()).to.eq("Email address");
});
cy.get("p")
.contains("Password should have minimum of 8 chars")
.then(($el) => {
expect($el.siblings("label").text()).to.eq("Password");
});
推荐阅读
- angular - 更改ts文件中的值后图像不会改变
- azure-keyvault - 从 Windows 窗体应用程序获取令牌在尝试获取密钥保险柜的秘密表单时卡住了
- python - ModuleNotFoundError:没有名为“bs4”BeautifulSoup 的模块
- docker - 无法访问 Kubernetes 集群外的 NodePort 服务
- spring-boot - 基于更改日志的租户架构更新的 Liqubase 多租户问题
- javascript - 如何用长度链接过滤器?
- javascript - 如何在前端生成图像/视频的缩略图?
- windows - 如何在解析类似命名的 XML 元素时为具有动态名称的环境变量赋值?
- .net - 设置我的第一个 .NET 5 + Angular 项目
- c# - 如何显示 mi 异步任务