Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery->;条件查询_Jquery_Authentication_Cypress - Fatal编程技术网

Jquery->;条件查询

Jquery->;条件查询,jquery,authentication,cypress,Jquery,Authentication,Cypress,我有一个问题,我想创建一个函数,在必要时登录到应用程序。例如,如果我将“it”声明为only,则它可能需要在启动浏览器时登录。 在登录页面上完全不是异步的。因此,它应该只查看是否已经登录。我唯一的解决方案是将超时设置得很短,并检查以下标记是否为false:我不确定我是否了解整个情况,但要进行调试,您可以临时将console.log插入到命令链中 使用Cypress命令而不是jQuery-虽然您说过绝对没有异步功能,但有时CSS动画需要命令重试机制才能成功 cy.get('header') .

我有一个问题,我想创建一个函数,在必要时登录到应用程序。例如,如果我将“it”声明为only,则它可能需要在启动浏览器时登录。
在登录页面上完全不是异步的。因此,它应该只查看是否已经登录。我唯一的解决方案是将超时设置得很短,并检查以下标记是否为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元素,我只给出了一个我在代码中成功使用的示例