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")] 属性で指定して、さらに BrowserDriver を組み込んでみました。そのため、_driver 変数を [SetUp] から移動する必要があり、_wait 変数はどの _driver を使用するかわかりません。
私はすべてのテストでそれをインスタンス化しようとしましたが、それは繰り返しであり、それらのテストは WebDriverWait 変数も必要とするメソッドを使用し、WebDriverWait 変数が既に宣言されているため、別のテストがそれらを実装しようとすると、それらのメソッドは 2 回目に実行されませんでした。
私の質問は、ドライバーが [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 を使用し、テストで再利用されるすべてのメソッドで _wait を使用します。[セットアップ]と[分解]で持っていたもの。