#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>)