Как вы тестируете веб-приложение реагировать с селеном?

У меня есть веб-приложение, использующее React, и я пытаюсь создать несколько тестов, используя Selenium RC. Я обнаружил, что когда Selenium изменяет значения полей, события не запускаются должным образом. Я знаю, что это несколько типичная проблема, о чем свидетельствуетFAQ по WebDriver и я пробовал кучу разных вещей, таких как использование onFocus вместо onChange и проверка, что фокус был изменен внутри и снаружи, использование sendKeys () против type (), программный вызов события и любые другие предложения, которые я мог найти в Интернете но я не смог заставить его работать.

В качестве простого примера того, что я пытаюсь сделать, я урезал пример реакции в поле для комментариев. У меня есть поле ввода textarea и div, который должен быть обновлен со значением textarea. Selenium может обновлять текстовую область, но когда это происходит, div не меняется.

Вот мой код реагирования:

/** @jsx React.DOM */

var MarkdownEditor = React.createClass({
  getInitialState: function() {
    return {value: 'Original Text'};
  },
  handleChange: function() {
    this.setState({value: this.refs.textarea.getDOMNode().value});
  },
  render: function() {
    return (
      <div className="MarkdownEditor">
        <h3>Input</h3>
        <textarea
          onChange={this.handleChange}
          ref="textarea"
          defaultValue={this.state.value} />
        <h3>Output</h3>
        <div
          className="content"
          id="content2",
          dangerouslySetInnerHTML={{
            __html: this.state.value
          }}
        />
      </div>
    );
  }
});

React.renderComponent(<MarkdownEditor />, document.getElementById('content'));

И вот мой текущий тестовый пример Selenium:

import com.thoughtworks.selenium.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
import java.util.regex.Pattern;
import java.util.Properties;
import junit.framework.TestCase;

public class textTest extends TestCase {

    protected Selenium selenium;

    @Before
    public void setUp() throws Exception {
        Properties sysProps = System.getProperties();
        String browser = sysProps.getProperty("browser.property");
        selenium = new DefaultSelenium("localhost", 4444, "*chrome", "http://localhost/");
        selenium.start();
    }

    @After
    public void tearDown() throws Exception {
        selenium.stop();
    }

    @Test
    public void testText() throws Exception {
        selenium.open("/reactTest/index.html");
        assertEquals("Original Text", selenium.getText("id=content2"));
        selenium.focus("id=content2");
        selenium.type("css=textarea[value=\"Original Text\"]", "xxxxx");
        selenium.focus("id=content");
        selenium.runScript("$('#tatest').trigger('change')");
        assertEquals("xxxxxOriginal Text", selenium.getText("id=content2"));
        Thread.sleep(80000);
    }

}

Изменить: код теперь доступен наhttps://github.com/ilionblaze/reactTest

Должен быть какой-то способ заставить эту работу!

Ответы на вопрос(2)

Ваш ответ на вопрос