我正在使用Selenium和GhostDriver,有时我收到错误: org.openqa.selenium.remote.UnreachableBrowserException:与远程浏览器通信时出错。它可能已经死亡,由异常引起包括java.lang.InterruptedException 使用findbyElement,findByElements,get或点击Selenium方法时会发生这种情况。
它不会一直发生,也不会发生在同一个地方,但它在Windows环境中更频繁地发生。
有谁知道如何避免这种异常?
我尝试在使用等待时添加更多时间,但它不起作用。
答案 0 :(得分: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);
}
}
}
答案 1 :(得分:0)
这对我有用:http://matejtymes.blogspot.co.uk/2014/10/webdriver-fix-for-unreachablebrowserexc.html
在任何地方使用PhantomJSDriver(它涵盖所有情况:get,click,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;
}
}
}
}
}