我正在使用Selenium驱动程序使用WebinatorSpecFlow + NUnit开发ASP.NET MVC 3应用程序。我在使用Chrome(使用chromedriver)和Internet Explorer运行并行测试时遇到问题。
每当我在同一个会话中运行两个测试并通过Webinator并行运行Selenium时,当我向页面发送任何点击操作时,IE似乎都会挂起。
我无法使用建议的here解决方案,因为SpecFlow会自动生成基础C#代码。我的解决方案的设计类似于this(完整代码可作为要点):
_multipleBrowsers.RunTest(web => web.GoToUrl("http://localhost/PROJECT/Authentication/Registration"));
我会为每个需要测试的浏览器实例化一个新的IWebManager。然后,我使用浏览器实例调用委托操作。它是这样的:
foreach (var web in _webManagers)
{
Debug.WriteLine("Running test with " + web.Config.Browser);
action(web);
}
这种测试几乎并行运行。它弹出浏览器,执行操作,然后弹出其他浏览器,等等。
有关如何克服此ChromeDriver问题的任何想法?我应该使用SpecFlow为多个浏览器更改我的测试方法吗?
参考文献:
答案 0 :(得分:3)
你可以更简单just use
然后用标签@Browser:IE
编写功能@Browser:IE
@Browser:Firefox
Scenario: Add comments
Given I navigated to /guinea-pig
And I have entered 'This is not a comment' into the commentbox
When I press 'submit'
Then my comment 'This is not a comment' is displayed on the screen
现在是我找到的最佳解决方案,因为它也可以在所有浏览器中进行测试,但具体针对您需要进行测试
答案 1 :(得分:0)
我创建了一个新的SpecFlow插件,该插件实现了已评论的注释。它支持SpecFlow 3(也意味着核心)。
它还可以与MsTest,NUnit和xUnit一起使用。
https://github.com/TotalTest/SpecFlow.Contrib.Variants
该场景及其在测试资源管理器中的外观可以在这里看到: img
但实际上您可以执行以下任一操作:
@Browser:Chrome
@Browser:Firefox
Feature: AnExampleFeature
或
@Browser:Chrome
@Browser:Firefox
Scenario: AnExampleScenario
场景将在每个浏览器上运行