带有Specflow的DataSource属性,用于多个浏览器测试

我在C#中进行了一些web ui测试,这些测试是通过browserstack中的selenium执行的。 目前这些只是简单的单位ms测试,它们在不同的浏览器中执行。 我想将测试移植到specflow,但我真的不知道如何进行多个浏览器测试。

目前,要在多个浏览器中执行这些测试,我使用的是DataSource属性,它基本上为XML文件中的相同测试提供不同的输入

[TestMethod] [Ignore] [DeploymentItem("JLL.Specs\\Browsers.xml")] [DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\Browsers.xml", "Row", DataAccessMethod.Sequential)] public void LoadHomePageAndFindSearchBox() { ... } 

问题是Specflow不支持DataSource属性。 任何的想法?

这是XML文件:

    Firefox 31.0 Windows 7 1280x1024      Chrome 36.0 Windows XP 1024x768     ... 

您可以使用Web驱动程序抽象框架来编写驱动程序不可知的测试代码。 为此,我使用了Coypu 。 使用此库,您可以轻松地在不同的Web驱动程序(例如Selenium,Phantom JS,WaitN)之间切换,而无需编写不同的驱动程序代码。

在Web驱动程序工厂类中,您可以使用类似的代码(有关详细信息,请参阅此处 ):

 sessionConfiguration.Driver = Type.GetType("Coypu.Drivers.Selenium.SeleniumWebDriver, Coypu"); sessionConfiguration.Browser = Drivers.Browser.Parse("firefox"); 

获取Selenium for FireFox的实例,或者您可以将“firefox”替换为“chrome”以获取Chrome的实例。

我已经使用这种方法为不同的浏览器运行一套测试,并且运行良好。 然而,这意味着为一个浏览器执行一套测试,然后在完成后运行另一个浏览器。

最好是使用Baseclass.Contrib.SpecFlow.Selenium.NUnit dll

看示例:

 @Browser:IE @Browser:Chrome @Browser:Firefox 

场景大纲:添加两个数字

您可以在function文件中使用@Browser:.......... 此属性将在每个浏览器的测试资源管理器中列出3个测试,您可以运行任何您想要使用的测试。

有关详细信息,请转到此处 。