2013-07-20 3 views
1

Я использую Selenium с GhostDriver, и иногда я получаю ошибку: org.openqa.selenium.remote.UnreachableBrowserException: ошибка связи с удаленным браузером. Возможно, он умер., Вызванный исключениями, это java.lang.InterruptedException Это происходит при использовании методов findbyElement, findByElements, get или click Selenium.Как избежать исключения времени выполнения Selenium 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; 
       } 
      } 
     } 
    } 
} 
Смежные вопросы