1

我有这个 HTML 结构:

<tr id="post-7053" class="iedit author-other level-0 post-7053 type-poi status-publish hentry webmapp_category-corbezzolo" data-id="7053">
   <th scope="row" class="check-column">
      <label class="screen-reader-text" for="cb-select-7053">
      Seleziona 594         </label>
      <input id="cb-select-7053" type="checkbox" name="post[]" value="7053">
      <div class="locked-indicator">
         <span class="locked-indicator-icon" aria-hidden="true"></span>
         <span class="screen-reader-text">
         “594” è bloccato               </span>
      </div>
   </th>
   <td class="5da0bb937bd9f column-5da0bb937bd9f has-row-actions column-primary column-postid" data-colname="ID">7053

我必须获取 ID 的值并在另一个站点上进行比较:

在此处输入图像描述

我必须得到第一个表 id 我设法用这个 cypress 命令得到它:

  id = cy.get('tbody#the-list td').first().invoke('val')

只有当我去比较变量id的值时。它永远不会进入 if 分支。如果我输入一个像 7156 或其他的值,它会进入 if 分支并进行比较。

下面的测试代码:

describe('Registration', () => {
    const email = 'nedo@go.br'
    const password = 'pedhu'
    var id

  it('create new Nedo', () => {
      cy.visit('https://test.nedo/wp-admin')
      cy.get('input[name=log]').type(email)
      cy.get('input[name=pwd]').type(password)
      cy.get('input#wp-submit').click()

      cy.visit('https://test.nedo/edit.php?post_type=nedo')

      id = cy.get('tbody#the-list td').first().invoke('val')

   })

   it('id', () => {
    cy.visit('https://nedostaging.z.hu/login')
    cy.get('input[name=email]').type('team@nedo.hi')
    cy.get('input[name=password]').type('nedo')
    cy.get('button').contains('Login').click()
    cy.get('#hometable > tbody > tr > td:nth-child(4)').each(($e, index, $list) => {
        const text = $e.text()
        cy.log(id)
        if (text.includes(id)) {//if I put a number instead of id it works
            assert.strictEqual(text, '{"id":'+id+'}', 'id nedo ok')
        }

    })

  })

cy.log(id):

在此处输入图像描述

4

1 回答 1

0

为了处理同源策略,您可以写入"chromeWebSecurity": false文件cypress.json。但这仅适用于 chrome 浏览器。

describe('Registration', () => {
   const email = 'nedo@go.br'
   const password = 'pedhu'

   before(() => {
      cy.visit('https://test.nedo/wp-admin')
      cy.get('input[name=log]').type(email)
      cy.get('input[name=pwd]').type(password)
      cy.get('input#wp-submit').click()
      cy.visit('https://test.nedo/edit.php?post_type=nedo')
      cy.get('tbody#the-list td').first().invoke('val').as('id')
   })
  
   it('id', () => {
      cy.visit('https://nedostaging.z.hu/login')
      cy.get('input[name=email]').type('team@nedo.hi')
      cy.get('input[name=password]').type('nedo')
      cy.get('button').contains('Login').click()
      cy.get('@id').then((id) => {
         cy.get('#hometable > tbody > tr > td:nth-child(4)').each(($e, index, $list) => {
            const text = $e.text()
            cy.log(id)
            if (text.includes(id)) { //if I put a number instead of id it works
               assert.strictEqual(text, '{"id":' + id + '}', 'id nedo ok')
            }
         })
      })
   })
})
于 2020-10-15T05:40:07.690 回答