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() 方法,但它需要参数吗?我在哪里通过 browser1 和 browser 2 ?

我的最终目标是让多个 firefox 浏览器实例运行相同的测试。

4

2 回答 2

1

run()线程中的方法没有任何参数。

你可以在你的线程实现中使用'setters'来做到这一点。有了这个你的代码应该看起来像 -

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

您的 Tester 将拥有 browser1 和 browser2 作为实例变量。或者你也可以通过Tester的构造函数设置browser1和browser2。

于 2010-08-20T06:18:42.963 回答
0

添加一个构造函数,它将浏览器作为参数。将引用存储在私有字段中,您可以在运行方法中使用浏览器:

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 回答