Проблема с автоматизацией тестирования, WYSYWIG Editor, PHP, REACT - PullRequest
0 голосов
/ 25 сентября 2018

Я работаю над проектом, который использует PHP и реагирует.Моя задача - написать автоматизированные тесты в Behat / Mink, но у меня есть запас.

У меня проблема с компонентом fillact-draft-WYSIWYG.

Я пытался использовать функции, подобные этим:

    public function fillField($fieldName, $fieldValue)
{
    $renderedFieldValue = $this->twigRenderStringTemplate($fieldValue, $this->saved);
    $this->fillField($fieldName, $renderedFieldValue);

, также я пытался использовать js, например, innerHTML.

WYSIWIG компонент в коде:

 <FieldWysiwyg valid={valid} label={t('project:field.companyDescription') + ' *'} name='companyDescription'
                          value={initialValues.companyDescription || ''}/>

Редактор в html

WYSIWYG редактор

Кто-нибудь знает, как заполнить это поле?

1 Ответ

0 голосов
/ 30 сентября 2018

Хорошо, я нашел решение.

Когда вы заполните поле WYSIWYG, вам нужно «обновить» DOM.Например, нажали кнопку «влево» в редакторе wysywig.

public function fillWYSIWYGfield($str, $selector)
{
    $page = $this->getSession()->getPage();
    $n = $page->find('css', $selector);


    $n = $n->find('css', 'span');

    $xpath = $n->getXpath();

    $jsCode = sprintf(
        "
        (function() {
            var eText = document.createTextNode(\"%s\");
            var eSpan = document.createElement(\"span\");
            eSpan.appendChild(eText);
            eSpan.setAttribute('data-text', true);

            var node = document.evaluate(\"%s\", document, null, XPathResult.ANY_TYPE, null);
            var val = node.iterateNext();

            val.textContent = '';
            val.appendChild(eSpan);
        }())
        ",
        $str,
        $xpath
    );
...