一尘不染

从C#NUnit在多个浏览器中依次运行Selenium测试

selenium

我正在寻找一种推荐/最有效的方式来使Selenium测试在多个浏览器中依次执行。我正在测试的网站并不大,所以我还不需要并行解决方案。

我有一个平时测试的建立方法[SetUp][TearDown]以及[Test]。当然,SetUp实例将ISelenium使用我要测试的任何浏览器实例化一个新对象。

因此,我想以编程方式说:该测试将依次在Chrome,IE和Firefox上运行。我怎么做?

编辑:

这可能会有所帮助。成功构建后,我们将使用CruiseControl.NET来启动NUnit测试。有什么方法可以将参数传递给NUnit可执行文件,然后在测试中使用该参数?这样,我们可以使NUnit在不同的浏览器参数下运行多次。


阅读 258

收藏
2020-06-26

共1个答案

一尘不染

NUnit 2.5+现在支持通用测试治具,使在多个浏览器中的测试非常简单。
http://www.nunit.org/index.php?p=testFixture&r=2.5

运行以下示例将两次执行GoogleTest,一次是在Firefox中,一次是在IE中。

using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.IE;
using System.Threading;

namespace SeleniumTests 
{
    [TestFixture(typeof(FirefoxDriver))]
    [TestFixture(typeof(InternetExplorerDriver))]
    public class TestWithMultipleBrowsers<TWebDriver> where TWebDriver : IWebDriver, new()
    {
        private IWebDriver driver;

        [SetUp]
        public void CreateDriver () {
            this.driver = new TWebDriver();
        }

        [Test]
        public void GoogleTest() {
            driver.Navigate().GoToUrl("http://www.google.com/");
            IWebElement query = driver.FindElement(By.Name("q"));
            query.SendKeys("Bread" + Keys.Enter);

            Thread.Sleep(2000);

            Assert.AreEqual("bread - Google Search", driver.Title);
            driver.Quit();
        }
    }
}
2020-06-26