如何使用命令。

发布于 2025-02-09 00:05:18 字数 1860 浏览 2 评论 0原文

我正在命令 commands.js下访问我的gmail帐户,然后获取所请求的电子邮件主体并将所需的数据从身体中提取,然后将其保存在const variable code >>现在,我想在我的testfile.cy.js中.Type type tulled的电子邮件数据(代码)。

commands.js

/// <reference types="cypress" 
import { parseString } from "xml2js";
Cypress.Commands.add('loginByGoogleApi', () => {  
  cy.request({
    method: 'POST',
    url: 'https://www.googleapis.com/oauth2/v4/token',
    body: {
      grant_type: 'refresh_token',
      client_id:  Cypress.env('googleClientId'),
      client_secret:  Cypress.env('googleClientSecret'),
      refresh_token:  Cypress.env('googleRefreshToken'),
    },   
  }).then(({ body }) => {
    const { access_token, id_token } = body
    cy.log('Opening emails including code to verify')
    cy.request({
      method: 'GET',
      url: 'https://mail.google.com/mail/feed/atom/verifyCode',
      headers: { Authorization: Bearer ${access_token} },
    }).then(({ body }) => {
      parseString(body, function (err, results) {
        let data = JSON.stringify(results)
        let codeTitle = JSON.parse(data).feed.entry[0].title[0];
        let code = codeTitle.replace('Chaine confirmation code: ','');
        cy.log(code)
      });
    });   
  })
})

testfile.cy.js

const { Code } = require("@chaine/keychaine");


describe('Open login page', () => {   
  it('Enter your email to login', () => {
    cy.visit('https://chaineapp.com/staging/login%27)
    cy.get('#field-1').click().type('[email protected]');
    cy.get('[class*="chakra-button css-yg51i0"]').click();
    cy.get('#pin-input-2-0').type(<need to put code here>);
    })   
  it('get code', () => {
    cy.loginByGoogleApi()

  }) 
})

I am accessing my Gmail account by command loginByGoogleApi under commands.js, then getting the requested email body and pulling the required data from the body, and saving it in a const variable code >> now I want to .type the pulled email data (code) in my testFile.cy.js.

commands.js

/// <reference types="cypress" 
import { parseString } from "xml2js";
Cypress.Commands.add('loginByGoogleApi', () => {  
  cy.request({
    method: 'POST',
    url: 'https://www.googleapis.com/oauth2/v4/token',
    body: {
      grant_type: 'refresh_token',
      client_id:  Cypress.env('googleClientId'),
      client_secret:  Cypress.env('googleClientSecret'),
      refresh_token:  Cypress.env('googleRefreshToken'),
    },   
  }).then(({ body }) => {
    const { access_token, id_token } = body
    cy.log('Opening emails including code to verify')
    cy.request({
      method: 'GET',
      url: 'https://mail.google.com/mail/feed/atom/verifyCode',
      headers: { Authorization: Bearer ${access_token} },
    }).then(({ body }) => {
      parseString(body, function (err, results) {
        let data = JSON.stringify(results)
        let codeTitle = JSON.parse(data).feed.entry[0].title[0];
        let code = codeTitle.replace('Chaine confirmation code: ','');
        cy.log(code)
      });
    });   
  })
})

testFile.cy.js

const { Code } = require("@chaine/keychaine");


describe('Open login page', () => {   
  it('Enter your email to login', () => {
    cy.visit('https://chaineapp.com/staging/login%27)
    cy.get('#field-1').click().type('[email protected]');
    cy.get('[class*="chakra-button css-yg51i0"]').click();
    cy.get('#pin-input-2-0').type(<need to put code here>);
    })   
  it('get code', () => {
    cy.loginByGoogleApi()

  }) 
})

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

知足的幸福 2025-02-16 00:05:18

您可以使用cy.wrap(code),类似的内容:

/// <reference types="cypress"
import {parseString} from 'xml2js'
Cypress.Commands.add('loginByGoogleApi', () => {
  cy.request({
    method: 'POST',
    url: 'https://www.googleapis.com/oauth2/v4/token',
    body: {
      grant_type: 'refresh_token',
      client_id: Cypress.env('googleClientId'),
      client_secret: Cypress.env('googleClientSecret'),
      refresh_token: Cypress.env('googleRefreshToken'),
    },
  }).then(({body}) => {
    const {access_token, id_token} = body
    cy.log('Opening emails including code to verify')
    cy.request({
      method: 'GET',
      url: 'https://mail.google.com/mail/feed/atom/verifyCode',
      headers: {Authorization: `Bearer ${access_token}`},
    }).then(({body}) => {
      parseString(body, function (err, results) {
        let data = JSON.stringify(results)
        let codeTitle = JSON.parse(data).feed.entry[0].title[0]
        let code = codeTitle.replace('Chaine confirmation code: ', '')
        return cy.wrap(code)
      })
    })
  })
})

在您的测试文件中,它就是这样:

describe('Open login page', () => {
  it('Enter your email to login', () => {
    cy.visit('https://chaineapp.com/staging/login%27')
    cy.get('#field-1').click().type('[email protected]')
    cy.get('[class*="chakra-button css-yg51i0"]').click()
    cy.loginByGoogleApi().then((code) => {
      cy.get('#pin-input-2-0').type(code) //types code
    })
  })

  it('get code', () => {
    cy.loginByGoogleApi().then((code) => {
      cy.log(code) //logs code
    })
  })
})

您还可以使用cypress.env进行全球保存并获得价值。

为了节省您可以写的:

Cypress.env('code', code)

获取值

cy.get('#pin-input-2-0').type(Cypress.env('code'));

You can use cy.wrap(code), something like this:

/// <reference types="cypress"
import {parseString} from 'xml2js'
Cypress.Commands.add('loginByGoogleApi', () => {
  cy.request({
    method: 'POST',
    url: 'https://www.googleapis.com/oauth2/v4/token',
    body: {
      grant_type: 'refresh_token',
      client_id: Cypress.env('googleClientId'),
      client_secret: Cypress.env('googleClientSecret'),
      refresh_token: Cypress.env('googleRefreshToken'),
    },
  }).then(({body}) => {
    const {access_token, id_token} = body
    cy.log('Opening emails including code to verify')
    cy.request({
      method: 'GET',
      url: 'https://mail.google.com/mail/feed/atom/verifyCode',
      headers: {Authorization: `Bearer ${access_token}`},
    }).then(({body}) => {
      parseString(body, function (err, results) {
        let data = JSON.stringify(results)
        let codeTitle = JSON.parse(data).feed.entry[0].title[0]
        let code = codeTitle.replace('Chaine confirmation code: ', '')
        return cy.wrap(code)
      })
    })
  })
})

In your test file, it will be like this:

describe('Open login page', () => {
  it('Enter your email to login', () => {
    cy.visit('https://chaineapp.com/staging/login%27')
    cy.get('#field-1').click().type('[email protected]')
    cy.get('[class*="chakra-button css-yg51i0"]').click()
    cy.loginByGoogleApi().then((code) => {
      cy.get('#pin-input-2-0').type(code) //types code
    })
  })

  it('get code', () => {
    cy.loginByGoogleApi().then((code) => {
      cy.log(code) //logs code
    })
  })
})

You can also use the Cypress.env to globally save and get the value.

To save you can write:

Cypress.env('code', code)

To get the value

cy.get('#pin-input-2-0').type(Cypress.env('code'));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文