0
public class Tester implements Runnable {
    public Tester() {
        // Init WebDriver
        FirefoxProfile firefoxProfile = new FirefoxProfile();
        WebDriver browser1 = new FirefoxDriver(firefoxProfile);
        WebDriver browser2 = new FirefoxDriver(firefoxProfile);
    }

    public static void main(String[] args) {    

        Runnable tester = new Tester();
        Thread worker1 = new Thread(tester);
        Thread worker2 = new Thread(tester);

        worker1.start();
        worker2.start();            
    }

    public void run(WebDriver driver) {
        login(driver, "username", "password", "http://someurl.com/login");
    }

}

ドライバー引数をrun()メソッドに渡そうとしていますが、引数を取りますか?ブラウザ1とブラウザ2をどこに渡すのですか?

私の最終目標は、Firefoxブラウザの複数のインスタンスで同じテストを実行することです。

4

2 に答える 2

1

run()スレッドのメソッドにはパラメーターがありません。

スレッドの実装で「セッター」を使用してそれを行うことができます。これにより、コードは次のようになります-

   Tester tester = new Tester();
   tester.setBrowser1(new FirefoxDriver( ....
   tester.setBrowser2(new FirefoxDriver( ....
   Thread worker2 = new Thread(tester);

テスターに​​は、インスタンス変数としてbrowser1とbrowser2があります。または、Testerのコンストラクターを使用してbrowser1とbrowser2を設定することもできます。

于 2010-08-20T06:18:42.963 に答える
0

ブラウザを引数として取るコンストラクタを追加します。参照をプライベートフィールドに保存すると、runメソッドでブラウザを使用できます。

public class Tester implements Runnable {
    private WebDriver browser;

    public Tester(WebDriver browser) {
        this.browser = browser;
    }

    public static void main(String[] args) {    

      Thread worker1 = new Thread(new Tester(new FirefoxDriver(firefoxProfile)));
      Thread worker2 = new Thread(new Tester(new FirefoxDriver(firefoxProfile)));

      worker1.start();
      worker2.start();            
    }

    public void run() {
        login(browser, "username", "password", "http://someurl.com/login");
    }

}
于 2010-08-20T06:18:37.510 に答える