带有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个测试,您可以运行任何您想要使用的测试。
有关详细信息,请转到此处 。