私は「FirefoxDriverを使用できません」という問題に直面しています。 。私はquit()を呼び出した後にドライバをインスタンス化しましたが、引き続きFirefoxDriverを使用することはできません。
私のフレームワークでは、WebDriverドライバ変数を静的変数として使用しました。各テストケースの終わりに、私はdriver.quit()メソッドを実行しました。 次のテストケースの開始時に、私は再びfirefoxdriver()の新しいインスタンスでドライバ変数を更新しましたが、ドライバ変数を使用してドライバ要素がnullを返すようにしました。ここに私のコードの簡略版があります。コンソールで
public class Frame
{
private static WebDriver driver;
public static WebDriver openUrl(String URL)
{
driver = new FirefoxDriver();
driver.get(URL);
return driver;
}
public static WebDriver returnWebDriverInstance()
{
System.out.println("I am called");
return driver;
}
}
public class javaCheck2
{
private static WebDriver driver = Frame.returnWebDriverInstance();
static
{
// driver = Frame.returnWebDriverInstance();
System.out.println(driver + " in static");
}
public static void pageMaxim()
{
System.out.println(driver + " in page maxim");
driver.manage().window().maximize();
}
public static void pagesource()
{
System.out.println(driver + " in page source");
driver.getPageSource();
}
}
@Test
public class TestCase1
{
public void TC01()
{
WebDriver driver = Frame.openUrl("https://www.google.com");
javaCheck2.pagesource();
driver.quit();
// driver.close();
}
}
@Test
public class TestCase2
{
public void TC02()
{
WebDriver driver = Frame.openUrl("https://www.gmail.com");
javaCheck2.pageMaxim();
driver.quit();
// driver.close();
}
}
出力:
I am called
FirefoxDriver: firefox on MAC (6df8103b-673f-954f-b20d-72fa4b9181b8) in static
FirefoxDriver: firefox on MAC (6df8103b-673f-954f-b20d-72fa4b9181b8) in page source
FirefoxDriver: firefox on MAC (null) in page maxim
===============================================
Suite
Total tests run: 2, Failures: 1, Skips: 0
===============================================
を。私はコードをリファクタリングしてより読み易いものにすることが99%であると確信しています(2つの簡単なテストですが、その半分を結びつけるのに時間がかかりました)。 "グローバル"ドライバ変数を持っている場合は、メソッド内でローカルコピーを作成する必要はありません。一方、確実に必要な場合は、localDriver、driver2などの何かを呼び出す必要があります。 – skandigraun
フレームクラスの静的なWebDriverドライバはprivateです。私はクラスの外からドライバメンバー変数に直接アクセスすることができないので、このプライベートな静的メソッドのコピーをメソッドで取得する必要があります。 – Coder