Как запустить два экземпляра Selenium Chrome Driver одновременно? - PullRequest
0 голосов
/ 20 сентября 2019

Я бы хотел, чтобы два селеновых драйвера Chrome работали одновременно.Однако, когда я назначаю поток каждому драйверу и перебираю список, содержащий потоки, одновременно активируется только один поток, а следующий не активируется, пока предыдущий не будет завершен / закрыт.Можно ли как-то запустить оба потока одновременно?

Основной класс:

for (int i = 0; i < list.length; i++) {
    Thread thread = new Thread() {
        @Override
        public void run() {
            try {
                Bot bot = new Bot(/* Parameters */);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    };
    thread.setDaemon(true);
    threadList.add(thread);
}
for (Thread t : threadList) {
    t.run();
}

Конструктор ботов

Bot(String url) throws Exception {
    System.setProperty("webdriver.chrome.driver", "resources/chromedriver.exe");
    driver = new ChromeDriver();
    driver.get(url);
    // Some more methods that interact with the webpage
}

1 Ответ

0 голосов
/ 21 сентября 2019

Я думаю, вы также можете использовать @dataprovider для передачи аргументов и использовать TestNG.xml для запуска ваших скриптов.Пример:

public class YourClass{
     @DataProvider(name = "yourParams")
    public Object[][] yourParams() {
        ..
        ..
        return *(Object[][] of params)*
    }

    @Factory(dataProvider="yourParams")
    public YourClass(params){     //Constructor
         try {
                Bot bot = new Bot(params);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
    }
}

А в testng.xml используйте thread-count="5" parallel="classes".Здесь счетчик потоков будет указывать номер параллельного экземпляра, который вы хотели бы иметь.

Пример:

<?xml version="1.0" encoding="UTF-8"?>
<suite name="Your Test" preserve-order="true" thread-count="5"
    parallel="classes">
    <test name="SRMF_342" group-by-instances="true"
        preserve-order="false">
        <classes>
            <class name="path_to_your_class" />
        </classes>
    </test>
</suite>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...