[
https://issues.apache.org/jira/browse/CB-8080?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14269813#comment-14269813
]
Andrew Grieve commented on CB-8080:
-----------------------------------
I've never used WebDriver, so I really don't know a solution without investing
a bunch of time. But, the JS uses prompt() to get the security code from the
native side. WebView routes prompt() calls to the registered WebChromeClient
instance, which in Cordova's case is
https://github.com/apache/cordova-android/blob/master/framework/src/org/apache/cordova/CordovaChromeClient.java.
Could be ChromeDriver is intercepting prompt() via JS, or it could be that it's
intercepting them via inserting a custom WebChromeClient. Might be easiest to
tell by logging the value of window.prompt, and see if it looks like function()
{ [native code] } or not.
> After migrating to 3.6.3 from 3.4.0, Appium (Android) tests fail because of
> open dialog
> ---------------------------------------------------------------------------------------
>
> Key: CB-8080
> URL: https://issues.apache.org/jira/browse/CB-8080
> Project: Apache Cordova
> Issue Type: Bug
> Components: Android, CordovaJS
> Affects Versions: 3.6.3
> Environment: Basic Appium test on Android webview based app. The test
> on Appium works until the app issues a `window.location.reload()` or a
> `window.location.href = 'something'`.
> Reporter: Andrea Tino
> Labels: javascript
> Attachments: MyApp-debug.apk
>
>
> After upgrading to Cordova 3.6.3 from Cordova 3.4.0; my Appium tests cannot
> go on because of a strange error. The error can be reproed very easily by
> creating a basic web-view based app on Android which issues a
> {{window.location.reload()}} after a while that the test starts.
> I could assess that the problem is one particular file: {{cordova.js}} which
> becomes part of the js files in my app when I build it with Cordova. My app
> loads only one javascript file: {{cordova.js}}, I removed all other
> dependencies to other js files. When that file is in my app (even though
> {{index.html}} does not use any function defined in there), my tests fails.
> If I remove the dependencies to that file, tests go ok!
> The problem is that when my app issues a {{window.location.reload()}}; my
> test fail with this error message:
> {code}
> info: [debug] Responding to client with error:
> {"status":26,"value":{"message":"A modal dialog was open, blocking this
> operation","origValue":"unexpected alert open\n (Session info: webview=)\n
> (Driver info: chromedriver=2.10.267521,platform=Windows NT 6.3
> x86_64)"},"sessionId":"965ba51e54f682559e5b8378095bc3d4"}
> {code}
> *Test*
> The APK to repro this is in attachments. It is possible to run a simple
> Appium test to repro the problem:
> {code}
> [Test]
> public void SimpleTest()
> {
> this.appPackage = "com.myorg.myapp";
> this.appActivity = "myapp";
> BeforeAll();
> Thread.Sleep(3000);
> var submitAddressButton =
> driver.FindElementByClassName("testClass");
> submitAddressButton.Click();
> Thread.Sleep(3000);
> submitAddressButton = driver.FindElementByClassName("testClass");
> Expect(submitAddressButton, Is.Not.Null);
> }
> {code}
> *Important*
> The fact that a dialog is reported is actually very strange. After inspecting
> a lot I could verify that no native/webview dialog is being shown on my app.
> In fact I cannot see any dialog and if I try to dismiss this ghost dialog
> using Appium and WebDriver APIs, the command fail as no dialog can be found.
> *Notes*
> Consider that the problem is not in the APIs I use in my test (C# dotnet
> driver for Appium). Everything happens on my Appium server running on a Mac.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]