当前位置: 首页 > 面试题库 >

如何使用selenium测试Reactjs Web应用程序?

韦棋
2023-03-14
问题内容

我有一个使用React的网络应用程序,我正在尝试使用Selenium
RC创建一些测试。我发现,当Selenium更改字段的值时,不会正确触发事件。我知道这是一个典型的问题,正如WebDriver常见问题所证明的那样,我已经尝试了很多不同的事情,例如使用onFocus而不是onChange并使用sendKeys()和type()确保焦点进出,以编程方式调用该事件以及我可以在网上找到的任何其他建议,但是我无法使其正常运行。

作为我要尝试做的一个简单示例,我删除了注释框的react示例。我所拥有的是一个textarea输入框和一个div,应该使用textarea的值进行更新。Selenium可以更新文本区域,但是当它完成时,div不会改变。

这是我的reactjs代码:

/** @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获得代码

必须有某种方法可以使这项工作!


问题答案:

在React TestUtils插件中尝试模拟:

React.addons.TestUtils.Simulate.change(document.getElementById('your-id-here'))

参见http://facebook.github.io/react/docs/test-
utils.html#simulate

它还要求您切换到包含插件的React文件:

“要获取附加组件,请使用react-with-addons.js(及其最小化的对应文件),而不要使用常见的react.js。” —
http://facebook.github.io/react/docs/addons.html



 类似资料:
  • 问题内容: 有没有人有使用Selenium自动测试使用Facebook Connect进行用户登录的Web应用程序的经验?您有任何建议的技巧或方法吗? 问题答案: 取决于你想做什么? 您会使用真实的Facebook用户(由Facebook验证电话)吗? 最安全,最可靠的方法,但是很难( 不可能 )收集“真实”用户(FB验证的电话)。 在定义用户/联系细节方面,例如教育历史,工作历史,姓名,年龄等(

  • 问题内容: 有没有人使用Selenium和大量的Dojo Web应用程序进行了广泛的自动化?我正在寻找您可能遇到的任何问题或与Selenium和Dojo的组合直接相关的问题。 问题答案: 我已经在许多不同的Web应用程序中广泛使用了Selenium,包括Dojo上的一些Web应用程序。你应该没事的。我建议的一种做法是确保要测试的所有组件(将要驱动的UI控件以及要阅读以进行测试的文本组件)均已设置I

  • 问题内容: 我刚刚在我的express应用程序中添加了shouldjs和mocha进行测试,但是我想知道如何测试我的应用程序。我想这样做: 当然,测试套件中的最后一个测试只是告诉med,res.render函数(在show_create_user_screen中调用)是未定义的,可能是因为服务器未运行且配置尚未完成。所以我想知道其他人如何设置他们的测试? 问题答案: 好的,虽然测试路由代码是您可能

  • 问题内容: 我想在jboss上使用gradle进行selenium测试,并且能够进行所需的配置,并且希望与社区共享。 问题答案: 解决方法如下: gradle.build: 您需要手动启动jboss服务器,然后使用命令 gradlew clean selenium

  • 问题内容: 我对仅测试客户端Java应用程序的UI感兴趣。最受欢迎的框架是什么?您推荐的框架是什么?另外,Selenium为什么不这样做(或这样做)?在我看来,任何可以测试Web应用程序的东西都应该能够测试Windows应用程序。 问题答案: 尝试FEST框架。如果我没记错的话,这就是以前称为Abbot的东西。我使用它进行自动化测试,它看起来非常简单和方便。简单的事情变得容易,而复杂的事情并不是火

  • 问题内容: 我对仅测试客户端Java应用程序的UI感兴趣。最受欢迎的框架是什么?您推荐的框架是什么?此外,Selenium为什么不这样做(或这样做)?在我看来,任何可以测试Web应用程序的东西都应该能够测试Windows应用程序。 问题答案: 尝试FEST框架。如果我没记错的话,这就是以前称为Abbot的东西。我使用它进行自动化测试,它看起来非常简单和方便。简单的事情变得容易,而复杂的事情并不是火