Как печатать с помощью cypress .type () в редакторе codemirror?

#codemirror #cypress #firepad

#codemirror #cypress #firepad

Вопрос:

Я пишу некоторый cypress тест для редактора Codemirror. Я использую cypress для ввода в поле ввода.

Я пытаюсь достичь cy.type() в редакторе CodeMirror. Данные, которые у меня есть в codemirror, находятся внутри диапазона.

 <pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> amp;< h1 amp;> Welcome to your web project canvas! amp;< /h1amp;></span></pre> 
  

Код спецификации cypress
cy.get(‘pre.CodeMirror-line’)
.type(‘Данные Cypress HTML’)

Я не могу ввести некоторые данные с помощью cypress.

Я был бы признателен, если кто-нибудь может помочь?

Ответ №1:

Вы не ориентируетесь на правильный элемент в своем коде спецификации. Вы делаете cy.get('pre.CodeMirror-line') , но <pre> тег не является cy.type() разрешаемым элементом.

Вместо этого вам нужно получить скрытое CodeMirror <textarea> . Это можно выбрать с помощью .CodeMirror textarea . Следующий JS — это демонстрационная спецификация, которая работает на codemirror.net :

 describe('Codemirror', () => {
  it('can be tested using textarea', () => {
    cy.visit('https://codemirror.net/')
    // CodeMirror's editor doesn't let us clear it from the
    // textarea, but we can read the Window object and then
    // invoke `setValue` on the editor global
    cy.window().then(win => {
      win.editor.setValue("")
    })
    cy.get('.CodeMirror textarea')
    // we use `force: true` below because the textarea is hidden
    // and by default Cypress won't interact with hidden elements
      .type('test test test test', { force: true })
  })
})
  

Комментарии:

1. Это идеальный блестящий парень!

2. Привет, @Zach Bloomquist Как очистить редактор? Я пробовал cy.get(‘.CodeMirror textarea’) .clear()

3. @RahulThawal вам нужно будет получить доступ к глобальному editor объекту, а затем setValue к нему. Я обновил ответ примером, который работает на codemirror.net .

4. Спасибо! Потрясающе!

5. В качестве альтернативы вы можете сделать следующее: cy.get('.CodeMirror-code').type(<your text>)