我正在做 UI 测试。起初我只从 Firefox 浏览器驱动程序开始,所以我会在类下声明 WebDriverWait 变量,并在 [SetUp] 方法下分配它,如代码块所示,每个测试都可以使用它。
public class FirefoxTest {
public IWebDriver _driver;
public WebDriverWait _wait;
[SetUp]
public void SetupTest() {
_driver = new FirefoxDriver();
_wait = new WebDriverWait(_driver, TimeSpan.FromSeconds(30));
}
然后我尝试通过使用 [TestCaseSource(typeof(WebDriverFactory), "Drivers")] 属性指定更多 BrowserDrivers 来合并它们。所以现在 _driver 变量必须从 [SetUp] 中移出,而 _wait 变量不知道要使用什么 _driver。
我尝试在每个测试中实例化它,但这是重复的,并且这些测试使用的方法也需要 WebDriverWait 变量,并且当另一个测试尝试实现它们时,这些方法不会第二次运行,因为已经声明了 WebDriverWait 变量。
我的问题是我在哪里可以实例化 WebDriverWait 和其他依赖于驱动程序的东西,这些东西通常用 [SetUp] 和 [TearDown] 编写,例如当驱动程序作为 [TestCase] 给出时 driver.Quit()。
现在我的测试写得像
[TestCaseSource(typeof(WebDriverFactory), "Drivers")]
public void SomeTest(IWebDriver driver){
driver.Navigate().GoTo....
}
问题是我必须包括
WebDriverWait _wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
driver.Quit()
在所有测试中以及在测试中重用的所有方法中的 _wait 。我在 [SetUp] 和 [Teardown] 中拥有的东西。