Как вы тестируете веб-приложение реагировать с селеном?
У меня есть веб-приложение, использующее 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
Должен быть какой-то способ заставить эту работу!