2016-10-12 21 views
0
 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複数のブラウザインスタンスを並列に実行する

答えて

0

これは並行性の問題だと思います。 あなたのメソッドにsynchronizedキーワードを使ってみましたか? public synchronized void runService()

またはgetDriver()メソッドで

これは役に立ちます。

関連する問題