function to return boolean to check if element exist in cypress(返回布尔值以检查柏树中是否存在元素的函数)
问题描述
如何编写函数返回布尔值以检查Cypress中UI上是否存在元素。我有下面的代码,它似乎工作得很好,直到我命中一个元素,我只能通过cy.get('.I_am_selector')获取该元素,并且当我使用我的函数isElementExist时,它总是返回Fasle,因为Cypress.$(.I_am_selector).length == 0;
export function isElementExist(selector: string): boolean {
try {
return Cypress.$(`.${selector}`).length > 0;
} catch (error) {
return false;
})
推荐答案
Cypresscy.get()已内置重试,因此如果元素正在加载或设置动画,该命令最终将捕获该元素。
但jQuery等效项Cypress.$(.${selector})没有重试。您可以尝试在您的函数中构建一些轮询,但工作量很大,为什么Cypress中没有内置cy.maybe(selector)?
如果您知道存在哪些元素,Cypress测试效果最好,它周围有很多文档,但始终存在边缘情况。
我看到的唯一方法是在这里How can manage the application flow, if the element xpath is not present,使用cypress-xpath加载项和count()函数。
cy.xpath(`count(//${element}[@class="${selector}"])`) // ok with async content
.then(count => {
const selector = count ? selector : defaultSelector;
您可能要查找允许您在逗号后提供默认选择符的jQuery OR Selector。
如果DOM是这样的
<div class="pick-me">one</div>
<div class="or-me">two</div>
此测试将获取div.pick-me
cy.get('.pick-me, .or-me') // jQuery OR selector
.eq(0) // in case both match, take first
.should('have.class', 'pick-me'); // first selector is used
但如果DOM没有第一个类,
<div class="dont-pick-me">one</div>
<div class="or-me">two</div>
该命令将返回默认选择器
cy.get('.pick-me, .or-me') // jQuery OR selector
.eq(0) // in case both match, take first
.should('have.class', 'or-me'); // default selector is used
这篇关于返回布尔值以检查柏树中是否存在元素的函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:返回布尔值以检查柏树中是否存在元素的函数
基础教程推荐
- 逻辑运算符 ||在 javascript 中,0 代表 Boolean false? 2022-01-01
- 即使每次插入第一个输入的值不同,第二个输入仍显示相同的输入值 2022-01-01
- HTML5 画布调整为父级 2022-01-01
- 最佳动态 JavaScript/JQuery 网格 2022-01-01
- 在 Javascript 中使用 Fetch API 上传文件并显示进度 2022-01-01
- CORS:当凭据标志为真时,无法在 Access-Control-Allow-Origin 中使用通配符 2022-01-01
- 当木偶师打开Chrome时,不能使用Chrome扩展 2022-01-01
- 使用 jQuery 在悬停时交换 DIV 类 2022-01-01
- 带角度的选项卡:仅使用 $http 在单击时加载选项卡 2022-01-01
- 从快速中间件中排除路由 2022-01-01
