模块化Selenium RC测试脚本的最佳实践

我在Visual Studio(C#)中创建Selenium RC测试脚本。 我正在努力重新考虑测试; 我的所有测试都在一个文件中。 我将非常感谢网站,书籍等的任何输入和/或指示,以了解模块化测试。

我必须在不同的站点(相同的应用程序,但为不同的客户端和登录配置不同)上运行相同的测试,这些测试95%相同。 有人愿意提供一些很好的例子或最佳实践吗?

谢谢!

编写Selenium测试或任何UI测试的最佳实践是Page Object Model ,它是为每个页面创建Object的想法。 这些对象中的每一个都抽象出页面,因此当您编写测试时,它看起来并不像您在使用Selenium。

因此,对于博客,您可以执行类似的操作来为主页创建对象

public class Home { private readonly ISelenium _selenium; ///  /// Instantiates a new Home Page object. Pass in the Selenium object created in the test SetUp(). /// When the object in instantiated it will navigate to the root ///  /// Selenium Object created in the tests public Home(ISelenium selenium) { this._selenium = selenium; if (!selenium.GetTitle().Contains("home")) { selenium.Open("/"); } } ///  /// Navigates to Selenium Tutorials Page. Selenium object wll be passed through ///  /// SeleniumTutorials representing the selenium_training.htm public SeleniumTutorials ClickSelenium() { _selenium.Click("link=selenium"); _selenium.WaitForPageToLoad("30000"); return new SeleniumTutorials(_selenium); } ///  /// Click on the blog or blog year and then wait for the page to load ///  /// blog or blog year /// Object representing /blog.* pages public Blog ClickBlogYear(string year) { _selenium.Click("link=" + year); _selenium.WaitForPageToLoad("30000"); return new Blog(_selenium); } // Add more methods as you need them } 

然后你会创建一个如下所示的测试

 [TestFixture] public class SiteTests { private ISelenium selenium; [SetUp] public void Setup() { selenium = new DefaultSelenium("localhost", 4444, "*chrome", "http://www.theautomatedtester.co.uk"); selenium.Start(); } [TearDown] public void Teardown() { selenium.Stop(); } [Test] public void ShouldLoadHomeThenGoToXpathTutorial() { Home home = new Home(selenium); SeleniumTutorials seleniumTutorials = home.ClickSelenium(); SeleniumXPathTutorial seleniumXPathTutorial = seleniumTutorials.ClickXpathTutorial(); Assert.True(seleniumXPathTutorial. IsInputOnScreen(SeleniumXPathTutorial.FirstInput)); Assert.True(seleniumXPathTutorial .IsInputOnScreen(SeleniumXPathTutorial.SecondInput)); Assert.True(seleniumXPathTutorial .IsInputOnScreen(SeleniumXPathTutorial.Total)); } }