Jquery->;条件查询
我有一个问题,我想创建一个函数,在必要时登录到应用程序。例如,如果我将“it”声明为only,则它可能需要在启动浏览器时登录。Jquery->;条件查询,jquery,authentication,cypress,Jquery,Authentication,Cypress,我有一个问题,我想创建一个函数,在必要时登录到应用程序。例如,如果我将“it”声明为only,则它可能需要在启动浏览器时登录。 在登录页面上完全不是异步的。因此,它应该只查看是否已经登录。我唯一的解决方案是将超时设置得很短,并检查以下标记是否为false:我不确定我是否了解整个情况,但要进行调试,您可以临时将console.log插入到命令链中 使用Cypress命令而不是jQuery-虽然您说过绝对没有异步功能,但有时CSS动画需要命令重试机制才能成功 cy.get('header') .
在登录页面上完全不是异步的。因此,它应该只查看是否已经登录。我唯一的解决方案是将超时设置得很短,并检查以下标记是否为false:我不确定我是否了解整个情况,但要进行调试,您可以临时将
console.log
插入到命令链中
使用Cypress命令而不是jQuery-虽然您说过绝对没有异步功能,但有时CSS动画需要命令重试机制才能成功
cy.get('header')
.then(console.log) // check console for jquery obj length 1
.should('have.attr', 'data-e2e-logged-in')
.then(console.log) // check console for "false" string
.then(value => {
if (value === 'false') {
cy.log('Login necessary');
this.login();
}
})
我不确定我是否了解整个情况,但要进行调试,您可以临时将
console.log
插入到命令链中
使用Cypress命令而不是jQuery-虽然您说过绝对没有异步功能,但有时CSS动画需要命令重试机制才能成功
cy.get('header')
.then(console.log) // check console for jquery obj length 1
.should('have.attr', 'data-e2e-logged-in')
.then(console.log) // check console for "false" string
.then(value => {
if (value === 'false') {
cy.log('Login necessary');
this.login();
}
})
据了解,你的案子可以这样解决:
cy.get('body')
.then(($body) => {
if ($body.find('header[data-e2e-logged-in="false"]').length) {
cy.log('Login necessary');
this.login();
}
})
尽管在运行此命令之前,请确保身体元素的渲染正确,因为根据我的经验,此命令只运行一次,而且如果元素稍后加载,则将无法达到其目的。根据,您的情况可以这样解决:
cy.get('body')
.then(($body) => {
if ($body.find('header[data-e2e-logged-in="false"]').length) {
cy.log('Login necessary');
this.login();
}
})
不过,在运行此命令之前,请确保身体元素的渲染正确,因为根据我的经验,此命令只运行一次,而且如果元素稍后加载,则此命令将无法实现其目的。谢谢。它并不能真正解决jquery的问题。但这绝对是一个有效的解决方案。它再次表明我的定位器是正确的。是的,但是不要使用jquery。这对于总是弹出的情况很好,但是如果元素有条件的话,它就会失败appearance@RosenMihaylov问题很明显是登录与否,而改变的是属性值,不是有没有
。很抱歉没有提供更多帮助,我尝试分享我的成功实践谢谢。它并不能真正解决jquery的问题。但这绝对是一个有效的解决方案。它再次表明我的定位器是正确的。是的,但是不要使用jquery。这对于总是弹出的情况很好,但是如果元素有条件的话,它就会失败appearance@RosenMihaylov问题很明显是登录与否,而改变的是属性值,不是有没有
。很抱歉没有提供更多帮助,我尝试分享我的成功实践。这在功能上与问题中的代码相同。区别在于我的代码对我有效,我已经测试过了。不知道它是如何工作的,但似乎最重要的部分是从cypress获取body元素,我只是给出了一个我在代码中成功使用的示例,这在功能上与问题中的代码相同。区别在于我的代码对我有效,我已经对它进行了测试。不知道它是如何工作的,但似乎最重要的部分是从cypress获取body元素,我只给出了一个我在代码中成功使用的示例