我只是想从运行Selenium(http://selenium.openqa.org)的人们那里获得一些意见,我在WaTiN上有很多经验,甚至为此编写了一个录音套件。我让它产生一些结构良好的代码,但仅由我自己维护,似乎我的公司几乎放弃了它。
如果您使用过selenium,您是否取得了很多成功?
我将使用.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是启动或进行快速的“尝试一下”测试的好方法。但是,当您考虑可维护性和可读性更高的代码时,必须编写自己的代码。
实现良好的硒代码的一种好方法是使用页面对象模式,使代码代表您的导航流程。这是我在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); } }
希望有帮助