У меня есть существующий проект, который использует Specflow и SpecRun для запуска некоторых тестов против Sauce Labs. У меня есть крючок BeforeSenario
, который создает RemoteWebDriver
и крючок AfterScenario
, который закрывает это.Ошибка при выполнении нескольких тестов в Specflow/Selenium
Я теперь переехал это в другой проект (скопированы файлы поверх, просто изменил пространство имен) и первый тест работает нормально, но получаю следующее сообщение об ошибке:
An exception of type 'OpenQA.Selenium.WebDriverException' occurred in WebDriver.dll but was not handled in user code
Additional information: Unexpected error. The command you just sent (POST element) has no session ID.
This is generally caused by testing frameworks trying to run commands after the conclusion of a test.
For example, you may be trying to capture a screenshot or retrieve server logs after selenium.stop() or driver.quit() was called in a tearDown method. Please make sure this process happens before the session is ended.
Я сравнил проект и он использует ту же версию SpecFlow, такую же .Net-версию. Я не вижу никакой разницы между этими двумя проектами.
В моих шагах у меня есть следующие строки:
public static IWebDriver driver = (IWebDriver)ScenarioContext.Current["driver"];
, который я думаю, что это вопрос, как вместо того, чтобы получить новый экземпляр этого из ScenarioContext
он использует версию предыдущего теста, который в настоящее время расположены.
Но я не понимаю, почему это работает в другом проекте?
Я использую пример Specflow в Github here
UPDATE
Похоже, я нашел проблему. В файле Default.srprofile testThreadCount
был равен 1, тогда как значение в рабочем решении было 10. Я обновил это, чтобы оно соответствовало, и оно работает.
Не уверен, что это за значение должно быть. Я предполагаю, что это не должно быть одинаковое количество тестов, но как же мне обойти исходную проблему контекста совместного драйвера?
Спасибо за эту ссылку, которая решила мою другую проблему о том, как делать тесты Specflow против нескольких браузеров! В Sauce Labs у меня может быть два параллельных теста, означает ли это, что я должен установить testThreadCount равным 2? Что мне делать со статическим полем? – ADringer
Да, установите его на 2 и просто удалите статику из поля. –