Selenium并行运行多个浏览器实例

时间:2016-10-12 08:34:55

标签: java multithreading selenium selenium-webdriver

       if (platform != null) {
                        for (final String p : platform) {
                            log.info("Platform " + p);
                            executorService.submit(new Runnable() {

                                @Override
                                public void run() {
                                    // TODO Auto-generated method stub
                                    try {
                                        runService(p, config, url, title, report);
                                    } catch (Exception e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                    }
                                }
                            });

                        }

                        executorService.shutdown();
                        executorService.awaitTermination(Long.MAX_VALUE,
                                TimeUnit.NANOSECONDS);

                        // for(final String p: platform){
                        // runUIService(p, config, url, title, report);
                        // }
                    }

    public void runService(){
              WebDriver driver = getDriver();
//some selenium operations performed
    }

我试图在多个线程中并行执行runService()。 getDriver()方法返回selenium WebDriver的新实例。如果我执行单个平台,所有selenium操作都会成功运行,但如果为多个平台触发相同的代码,尽管为每个平台打开了一个新的浏览器实例,我在找不到的selenium元素时会遇到很多错误。我无法确定这可能是什么原因?是否存在与通过selenium同时运行多个浏览器实例相关的问题?

1 个答案:

答案 0 :(得分:0)

我认为这是一个并发问题。 您是否尝试过使用synchronized关键字作为方法? 即 public synchronized void runService()

或在你的getDriver()方法中。

希望这可以提供帮助。