【发布时间】:2013-04-14 02:08:23
【问题描述】:
我正在做 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 变量。
我的问题是,当驱动程序作为 [TestCase] 给出时,我可以在哪里实例化 WebDriverWait 和其他依赖于驱动程序并且通常用 [SetUp] 和 [TearDown] 编写的东西,例如 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] 中拥有的东西。
【问题讨论】:
标签: c# nunit selenium-webdriver