我只是想从运行Selenium的人那里得到一些意见(http://selenium.openqa.org)我在WaTiN方面有很多经验,甚至还为它写了一套录音套件.我有它生成一些结构良好的代码,但只是由我维护,似乎我的公司几乎放弃了它.如果你已经运行了硒,你有很多成功吗?我将使用.NET 3.5,Selenium能很好地使用它吗?生成的代码是干净的还是只是所有交互的列表?(http://blogs.conchango.com/richardgriffin/archive/2006/11/14/Testing-Design-Pattern-for-using-WATiR_2F00_N.aspx)分布式测试套件的公平性如何?
任何其他抱怨或赞美系统将不胜感激!
如果您使用Selenium IDE生成代码,那么您只需获取selenium将执行的每个操作的列表.对我来说,Selenium IDE是一个很好的方式来开始或快速"尝试看"测试.但是,当您考虑可维护性和更易读的代码时,您必须编写自己的代码.
实现良好的selenium代码的一个好方法是使用页面对象模式,代码表示导航流.这是我在Coding Dojo Floripa(来自巴西)看到的一个很好的例子:
public class GoogleTest { private Selenium selenium; @Before public void setUp() throws Exception { selenium = new DefaultSelenium("localhost", 4444, "*firefox", "http://www.google.com/webhp?hl=en"); selenium.start(); } @Test public void codingDojoShouldBeInFirstPageOfResults() { GoogleHomePage home = new GoogleHomePage(selenium); GoogleSearchResults searchResults = home.searchFor("coding dojo"); String firstEntry = searchResults.getResult(0); assertEquals("Coding Dojo Wiki: FrontPage", firstEntry); } @After public void tearDown() throws Exception { selenium.stop(); } } public class GoogleHomePage { private final Selenium selenium; public GoogleHomePage(Selenium selenium) { this.selenium = selenium; this.selenium.open("http://www.google.com/webhp?hl=en"); if (!"Google".equals(selenium.getTitle())) { throw new IllegalStateException("Not the Google Home Page"); } } public GoogleSearchResults searchFor(String string) { selenium.type("q", string); selenium.click("btnG"); selenium.waitForPageToLoad("5000"); return new GoogleSearchResults(string, selenium); } } public class GoogleSearchResults { private final Selenium selenium; public GoogleSearchResults(String string, Selenium selenium) { this.selenium = selenium; if (!(string + " - Google Search").equals(selenium.getTitle())) { throw new IllegalStateException( "This is not the Google Results Page"); } } public String getResult(int i) { String nameXPath = "xpath=id('res')/div[1]/div[" + (i + 1) + "]/h2/a"; return selenium.getText(nameXPath); } }
希望有助于
我正在使用Selenium Remote Control来测试ASP.Net应用程序(这是我假设你也将成为目标),并且效果很好.
如果您从未使用过Selenium,请观看一些使用Selenium IDE 的截屏视频.这将让您对"Selenium"的工作原理有所了解.IDE是一个firefox插件,基本上可以让你随时开发快速记录和播放测试.对于较大的测试套件或编写真正可维护的测试,我建议使用Selenium Remote Control.(如果你刚刚开始,那么IDE非常棒.)
Selenium Remote Control允许您使用自己喜欢的语言和单元测试框架来驱动Web浏览器以执行测试.如果你对C#/ NUnit最熟悉,你可以用这种方式编写测试并使用你喜欢的所有NUnit好东西.(例如,Test-Driven.net插件).此外,由于您的测试是用高级语言编写的,因此您可以执行从特定测试类继承的操作,您可以使用它来使您的实际测试方法代码更加清晰.(或者至少就是我编写测试的方式.它让我测试复杂的场景,使我的测试方法行数保持合理的数量.)
你提到分布式测试.不幸的是,我还没有找到一种方法来使用NUnit 的Selenium Grid项目.Selenium Grid允许您在多个不同的计算机和浏览器实例上执行测试套件.因此,不是一个接一个地说出200个测试方法(即,连续地),而是在一台机器或多台机器上将负载分散到四个网格实例(即,一次在四个不同的浏览器实例中运行)上.关于你想要分配的方式.
如果你用Java或PHP编写测试,你可能会有更好的运气.我希望通过NUnit发布NUnit2.5,包括用于并行测试的pNUnit.
如果您对硒有任何疑问,请澄清您的原始问题,我将很乐意帮您解决.(Selenium只是我每天使用的那些工具之一,所以我喜欢帮助新人开始使用它..)