2013-07-20 56 views
1

我使用硒與GhostDriver,有時我得到了錯誤: org.openqa.selenium.remote.UnreachableBrowserException:與遠程瀏覽器通信時出錯。它可能已經死亡,由異常引起包括java.lang.InterruptedException 它發生在使用selenium的findbyElement,findByElements,get或click方法時。如何避免硒運行時異常UnreachableBrowserException

它並不總是發生在不同的地方,但它在Windows環境中發生的頻率更高。

有誰知道我該如何避免這種異常?

我試着增加更多的時間,而使用等待,但它沒有工作。

回答

0

要避免此異常,可以覆蓋get方法。 (通常,此異常追加一次)

public class CustomPhantomJSDriver extends PhantomJSDriver { 

    @Override 
    public void get(String url) { 
     int count = 0; 
     int maxTries = 5; 
     while (count < maxTries) { 
      try { 
       super.get(url); 
       break; 
      } catch (UnreachableBrowserException e) { 
       count++; 
      } 
     } 
     if (count == maxTries) { 
      throw new UnreachableBrowserException(url); 
     } 
    } 
} 
0

這爲我工作:http://matejtymes.blogspot.co.uk/2014/10/webdriver-fix-for-unreachablebrowserexc.html

使用任何你否則將使用PhantomJSDriver(它涵蓋了所有的情況:獲得,點擊,findByElement,...)

public class FixedPhantomJSDriver extends PhantomJSDriver { 

    private final int retryCount = 2; 

    public FixedPhantomJSDriver() { 
    } 

    public FixedPhantomJSDriver(Capabilities desiredCapabilities) { 
     super(desiredCapabilities); 
    } 

    public FixedPhantomJSDriver(PhantomJSDriverService service, Capabilities desiredCapabilities) { 
     super(service, desiredCapabilities); 
    } 

    @Override 
    protected Response execute(String driverCommand, Map<String, ?> parameters) { 
     int retryAttempt = 0; 

     while (true) { 
      try { 

       return super.execute(driverCommand, parameters); 

      } catch (UnreachableBrowserException e) { 
       retryAttempt++; 
       if (retryAttempt > retryCount) { 
        throw e; 
       } 
      } 
     } 
    } 
} 
相關問題