私は多くのクラスを持つコードを持っています。
ドライバを作成するクラスがあります -assertTrueの後にJava Seleniumを閉じるブラウザ
public class DriverDelegate {
private String baseURL = "someLink";
private WebDriver driver;
private WebDriverWait wait;
DriverDelegate(String url) {
System.setProperty("webdriver.chrome.driver", "${directory}");
driver = new ChromeDriver();
driver.get(baseURL + url);
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
wait = new WebDriverWait(driver, 5);
}
public WebDriver getDriver() {
return driver;
}
は、私はすべてのテストのための新しいドライバを作成します。
public class Startup{
@Test
public void HeaderClicker() throws Exception{ UserInterfaceTests UI = new UserInterfaceTests(); UI.headerClicker();}
ここでの私の質問はいるassertTrue後にブラウザを閉じる方法である - そして、私の株のほとんどは、今私は、スタートアップと呼ばれるクラスからの私のテストを起動this-
public class UserInterfaceTests extends BaseTest{
@Test
public void headerClicker() throws java.lang.Exception {
//Startup
DriverDelegate driverDelegate = new DriverDelegate("url");
WebDriver driver = driverDelegate.getDriver();
//Some random assertTrue
assertTrue("Test(HeaderClicker) - NoSuchElementException click", TestHelper.headerClicker(schedule, driver));
//I hope that it is not neccessary to put up all helper classes like TestHelper or BaseTest
のようにいるassertTrueを含むものであり失敗する。 @AfterTest、@AfterSuiteなどのようなものは、他のメソッドがテストで使用されたものと同じドライバを使用できないため動作しません。
アイデアをお探しですか?
どのようなテストフレームワークを使用しますか? testNG? '@test'で '@test'を使うのは、とても悪いことです。 –
現時点では私はtestNGを使用しています。あなたがそれが悪い習慣であると言うなら、それの代わりに何を使うべきですか?それはなぜ悪いのですか? – Syord
明確で素敵なコードが必要な場合は、testNG用のXML設定ファイルを使用する必要があります。https://github.com/SeleniumHQ/selenium/wiki/LoadableComponent もお勧めです。次に、デザインパターンについて読んでください。 '@Test'はできるだけ短い必要があります。 –