【发布时间】:2016-10-10 20:54:33
【问题描述】:
我有一个现有项目,它使用 Specflow 和 SpecRun 对 Sauce Labs 运行一些测试。我有一个 BeforeSenario 钩子创建一个 RemoteWebDriver 和一个 AfterScenario 钩子来关闭它。
我现在已经将它移到另一个项目中(复制文件,只是更改了命名空间),第一个测试运行良好,但随后出现以下错误:
WebDriver.dll 中出现“OpenQA.Selenium.WebDriverException”类型的异常,但未在用户代码中处理
附加信息:意外错误。您刚刚发送的命令(POST 元素)没有会话 ID。
这通常是由于测试框架在测试结束后试图运行命令造成的。
例如,您可能正在尝试捕获屏幕截图或检索服务器日志 在一个 tearDown 方法中调用 selenium.stop() 或 driver.quit() 之后。 请确保此过程在会话结束之前发生。
我比较了这个项目,它使用相同版本的 SpecFlow,相同的 .Net 版本。我看不出这两个项目有什么区别。
在我的步骤中,我有以下行:
public static IWebDriver driver = (IWebDriver)ScenarioContext.Current["driver"];
我认为这是问题所在,因为它没有从 ScenarioContext 获取它的新实例,而是使用了以前的测试版本,该版本现已被处置。
但我不明白为什么这在另一个项目中起作用?
我正在使用 Github 中的 Specflow 示例 here
更新
看来我找到了问题所在。在 Default.srprofile 中,testThreadCount 为 1,而工作解决方案中的值为 10。我现在已将其更新为匹配并且可以正常工作。
不知道这个值应该是多少。我认为它不应该是相同数量的测试,但是我该如何解决共享驱动程序上下文的原始问题?
【问题讨论】:
标签: selenium specflow saucelabs