柏树赛跑者忽略charset =“ windows-1252” html标记

时间:2019-03-17 03:48:24

标签: character-encoding cypress html-encode windows-1252

我正在测试一个Windows-1252编码的页面,它在html中具有以下meta标签:

<html>
<head>
  <title>Meta-SSC</title>
  <meta http-equiv="Content-Type" content="text/html">
  <meta charset="windows-1252">

但是柏树赛跑者无法捕捉到它,并且无法正确显示á,é等字符,如下所示:

cypress runner ignoring windows 1252 charset html meta tag

因此我的测试失败。

另一方面,在chrome(版本72.0.3626.121在Windows 10上运行的32位正式版本)或firefox(65.0.2 64位)上进行测试时,它可以正常工作:

enter image description here

任何想法我该如何解决?


在赛普拉斯的github上找到了this issue

1 个答案:

答案 0 :(得分:0)

它确实是known issue

这是我开发的解决方法:

Cypress.Commands.add('containsLike', {
  prevSubject: true
}, (subject, search, chars) => {

  chars = chars || 'áéíóúñÁÉÍÓÚÑ'
  if (!Array.isArray(chars)) chars = chars.toString().split('')

  chars.forEach( char => {
    const repAllChars = new RegExp(char, 'g') // see: https://stackoverflow.com/a/17606289/47633
    search = search.replace(repAllChars, '.')
  })

  const regExp = new RegExp('^' + search + '$')
  return cy.wrap(subject).contains(regExp)
})

我这样使用它:

describe('my first test', () => {
  it.only('should pass', () => {
    cy.visit('http://localhost/xxxx/yyy.asp')
      .get('div.flash_error span')
      .containsLike('El código de la aplicacion no puede estar vacío.')
// it runs .contains(/^El c.digo de la aplicacion no puede estar vac.o\.$/)
  })
})