2010-08-20 2 views
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?Как передать новый экземпляр FirefoxDriver для каждого нового потока?

Моя конечная цель состоит в том, чтобы иметь несколько экземпляров браузера Firefox, выполняющих те же тесты.

ответ

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"); 
    } 

} 
+0

Это открывает браузер первого потока, но ничего не происходит. Я закрываю его, и браузер второго потока открывается, и все работает так, как должно. Как я могу запустить оба экземпляра одновременно? – KJW

+0

ах, дающий отдельные профили для каждого экземпляра, решил проблему. – KJW

1

run() метод в потоке не имеет каких-либо параметров.

Вы можете сделать это, используя «сеттеры» для реализации потока. При этом ваш код должен выглядеть так:

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

Ваш тестер будет иметь переменные экземпляра browser1 и browser2. Или вы также можете установить браузер1 и browser2 через конструктор Tester.

 Смежные вопросы

  • Нет связанных вопросов^_^