对于我们的BDD测试,我们使用Specflow与selenium 2 webdriver(本例中的Chrome驱动程序)交谈。Selenium2 - 在CI上运行测试会导致多个驱动程序实例
在本地主机上运行(是的,“它在我的机器上运行”在对话中出现了几次),测试正常工作。他们设置数据和一个新的webdriver,做测试,然后拆卸webdriver和数据。即使测试出现可怕的错误,因为我使用了正确的属性,拆卸总是会被打开,因此driver.Quit()
正在运行,从而破坏了浏览器和驱动程序。
使用我们的持续集成[TeamCity]在我们的服务器[Windows Server 2008 r2]上运行它时,出现问题。出于某种原因,它将开始运行多个驱动程序实例,这会导致测试失败。
有没有人遇到过这个问题,并找到解决办法?我们需要一个使用驱动程序的解决方案,该驱动程序不是不是HtmlUnitDriver
。
额外信息:
- 语言= C#
- 服务器=的Windows Server 2008 R2
- CI = TeamCity的
编辑: 的webdriver的是确保它成立尚未创建,然后创建ChromeDriver
的新实例。下面的伪代码/实际代码示例显示了它的设置方式,对不起,我无法显示完整的代码,因为我们使用其他选项(例如zap或fiddler集成/语言更改等)来使用它。
设置
[SetUp]
[BeforeScenario()]
public static void BeforeWebScenario()
{
if driver == null
driver = new ChromeDriver();
// Code to start page
}
推倒
[TearDown]
[AfterScenario()]
public static void AfterWebScenario()
{
try
{
driver.Quit();
} catch (Exception)
{
throw Exception
}
driver = null;
}
你可以给一个样本测试,再现这个? – Arran
有两个问题:首先,您如何使用ChromeDriver或RemoteWebDriver启动驱动程序?其次,测试驱动程序的典型构造函数是什么样的? – JimEvans
嗨,感谢您的兴趣,它很难给出一个示例测试,因为他们使用我创建并操作页面对象模型(有很多抽象)的框架。我将编辑帖子以显示如何设置驱动程序。 – Ankou