我有一个基本的Gherkin / selenium框架。它有一个BeforeScenario和AfterScenario代码块。BeforeScenario代码块按预期工作,但一旦退出,webDriver变为空,因此AfterScenario中的代码不运行.quit()代码。
步骤:
using Coypu;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using System;
using TechTalk.SpecFlow;
namespace Steps
{
[Binding]
public class Steps
{
public IWebDriver webDriver;
[BeforeScenario]
public void BeforeScenario()
{
// BeforeScenario code
ChromeOptions options = new ChromeOptions();
options.AddArguments("--incognito");
options.AddArguments("start-maximized");
IWebDriver webDriver = new ChromeDriver(options);
webDriver.Navigate().GoToUrl("URL");
}
[AfterScenario]
public void AfterScenario()
{
// BeforeScenario code
if (webDriver == null)
{
throw new Exception("Driver is null, call BeforeScenario() first.");
}
webDriver.Quit();
}
[Given(@"testOne")]
public void GivenTestOne()
{
webDriver.FindElement(By.TagName("body")).Text.Contains("text");
}
}
}功能:
Feature: Welcome-Page-Elements
Scenario: test
Given testOne发布于 2017-11-27 17:13:21
正如注释中提到的,您似乎正在创建一个新变量webDriver,该变量的作用域仅限于BeforeScenario。
解决办法是改变这种情况:
// declares a new method level webDriver
IWebDriver webDriver = new ChromeDriver(options);对此:
// uses class level webDriver
webDriver = new ChromeDriver(options);https://stackoverflow.com/questions/47515720
复制相似问题