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
这篇关于返回布尔值以检查柏树中是否存在元素的函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:返回布尔值以检查柏树中是否存在元素的函数


猜你喜欢
- Fetch API 如何获取响应体? 2022-01-01
- Flexslider 箭头未正确显示 2022-01-01
- addEventListener 在 IE 11 中不起作用 2022-01-01
- Css:将嵌套元素定位在父元素边界之外一点 2022-09-07
- 400或500级别的HTTP响应 2022-01-01
- 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06
- 失败的 Canvas 360 jquery 插件 2022-01-01
- CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01
- Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01
- 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01