Skip to content

Commit 2a665a3

Browse files
committed
another case of StaleElement message that can appear
1 parent d6a87e7 commit 2a665a3

File tree

1 file changed

+18
-32
lines changed

1 file changed

+18
-32
lines changed

selendroid-server/src/main/java/io/selendroid/server/model/SelendroidWebDriver.java

Lines changed: 18 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -19,21 +19,20 @@
1919
import android.os.Message;
2020
import android.view.KeyEvent;
2121
import android.view.View;
22-
import android.webkit.ConsoleMessage;
23-
import android.webkit.GeolocationPermissions;
24-
import android.webkit.HttpAuthHandler;
25-
import android.webkit.JsPromptResult;
26-
import android.webkit.JsResult;
27-
import android.webkit.SslErrorHandler;
28-
import android.webkit.ValueCallback;
29-
import android.webkit.WebChromeClient;
30-
import android.webkit.WebResourceResponse;
31-
import android.webkit.WebSettings;
32-
import android.webkit.WebStorage;
33-
import android.webkit.WebView;
34-
import android.webkit.WebViewClient;
35-
36-
import org.apache.cordova.*;
22+
import android.webkit.*;
23+
import io.selendroid.server.ServerInstrumentation;
24+
import io.selendroid.server.android.*;
25+
import io.selendroid.server.android.internal.DomWindow;
26+
import io.selendroid.server.common.exceptions.SelendroidException;
27+
import io.selendroid.server.common.exceptions.StaleElementReferenceException;
28+
import io.selendroid.server.common.exceptions.TimeoutException;
29+
import io.selendroid.server.model.internal.WebViewHandleMapper;
30+
import io.selendroid.server.model.js.AndroidAtoms;
31+
import io.selendroid.server.util.SelendroidLogger;
32+
import org.apache.cordova.CordovaChromeClient;
33+
import org.apache.cordova.CordovaInterface;
34+
import org.apache.cordova.CordovaWebView;
35+
import org.apache.cordova.CordovaWebViewClient;
3736
import org.apache.cordova.engine.SystemWebChromeClient;
3837
import org.apache.cordova.engine.SystemWebView;
3938
import org.apache.cordova.engine.SystemWebViewClient;
@@ -45,20 +44,6 @@
4544
import java.lang.reflect.Field;
4645
import java.util.*;
4746

48-
import io.selendroid.server.ServerInstrumentation;
49-
import io.selendroid.server.android.AndroidTouchScreen;
50-
import io.selendroid.server.android.KeySender;
51-
import io.selendroid.server.android.MotionSender;
52-
import io.selendroid.server.android.WebViewKeySender;
53-
import io.selendroid.server.android.WebViewMotionSender;
54-
import io.selendroid.server.android.internal.DomWindow;
55-
import io.selendroid.server.common.exceptions.SelendroidException;
56-
import io.selendroid.server.common.exceptions.StaleElementReferenceException;
57-
import io.selendroid.server.common.exceptions.TimeoutException;
58-
import io.selendroid.server.model.internal.WebViewHandleMapper;
59-
import io.selendroid.server.model.js.AndroidAtoms;
60-
import io.selendroid.server.util.SelendroidLogger;
61-
6247
import static java.util.concurrent.TimeUnit.MILLISECONDS;
6348
import static java.util.concurrent.TimeUnit.SECONDS;
6449

@@ -220,9 +205,10 @@ public Object executeAtom(AndroidAtoms atom, JSONArray args, KnownElements ke)
220205
JSONObject json = new JSONObject(jsResult);
221206
if (0 != json.optInt("status")) {
222207
Object value = json.get("value");
223-
if ((value instanceof String && value.equals("Element does not exist in cache"))
224-
|| (value instanceof JSONObject && ((JSONObject) value).getString("message").equals(
225-
"Element does not exist in cache"))) {
208+
if ((value instanceof String && value.equals("Element does not exist in cache")) ||
209+
( value instanceof JSONObject &&
210+
(((JSONObject) value).getString("message").equals("Element does not exist in cache") ||
211+
((JSONObject) value).getString("message").equals("Element is no longer attached to the DOM")))) {
226212
throw new StaleElementReferenceException(json.optString("value"));
227213
}
228214
throw new SelendroidException(json.optString("value"));

0 commit comments

Comments
 (0)