0

ポップアップを許可するために、ChromeOptions をドライバーに渡そうとしています。@BeforeClass、@Test、および @AfterClass アノテーションを使用して TestNG を使用しています。ポップアップを有効にしようとしていますが、次の方法を使用して成功しました。

@BeforeClass
public void setUp(){
    if (driver instanceof ChromeDriver){
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--disable-popup-blocking");
        driver = new ChromeDriver(options);
    }
   }

これは機能しますが、Web ドライバーを開き、オプションを使用して別のドライバーを開きます。2 つの Web ドライバーがポップアップするのは望ましくありません。これらのオプションを最初の Web ドライバーに渡したいだけです。ドライバーがインスタンス化され、そのクラスを変更したくない xml と TestExtension クラスを使用してこれらを実行しています。これらのオプションを渡すだけのものに driver = new ChromeDriver(options) を変更する方法はありますか? ありがとう!

4

1 に答える 1

1

TestExtension クラスを変更せずにこれを行うことはできません。その理由は、渡す引数が何であれ、インスタンス化時に生成されるブラウザーに渡されるためです。その後、生成されたブラウザーの動作を変更するために何かを変更する方法はありません。TestExtension クラスを変更してから、ユーザーが基本的に独自の機能を注入できるメカニズムを提供する必要があります。これは、ブラウザを生成する前に TestExtension によって考慮されます。クラスの完全修飾パッケージ名を渡すのと同じくらい簡単です。このクラスは、呼び出されたときに、JVM 引数を介して渡す機能オブジェクトをインスタンス化できます。

TestExtension クラスは基本的に、渡されたカスタム機能の JVM 引数を検査し、見つかった場合は、それらの機能をその機能にマージしてから、ブラウザーを生成します。これが唯一の方法です。

于 2016-03-01T05:27:40.140 に答える