How to handle java script login pop up

Hi,

I am currently facing the issue when i launch a web application on Chrome using Android.

As soon as i launch the web application i get a pop up asking for Authentication.
The control is not returned from driver.get() to driver.context(“NATIVE_APP”).

Environment:

DEVICE: NEXUS
OS: ANDROID
VERSION: 4.4.4
BROWSER: CHROME

Below is the code

package com.GSK;

import java.io.IOException;
import java.util.Set;

import io.appium.java_client.AppiumDriver;

import org.apache.commons.exec.ExecuteException;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.AfterClass;

import com.Driver.Driver;
import com.Driver.PrepareCapabilities;
import com.commonFunctions.CommonFunctionLibrary;

public class NewTest
{
DesiredCapabilities capabilities=null;
Driver driver=null;
PrepareCapabilities cap=null;
String path=null;
AppiumDriver apDriver=null;
CommonFunctionLibrary commfunc=null;

@Test
public void someFunction()
{
System.out.println(“launched…”);
}
@BeforeMethod
public void beforeMethod()
{

}

@AfterMethod
public void afterMethod() {
}

@BeforeClass
public void beforeClass()
{
cap=new PrepareCapabilities();
try {
apDriver=cap.sendConfigToDriver();
} catch (ExecuteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
commfunc=new CommonFunctionLibrary(apDriver);
commfunc.launchWebApp(“URL”);//once this is launched i am unable to execute next line of code.
String con= apDriver.getContext();

}

@AfterClass
public void afterClass() {
}

}

Below is the Appium server log:

e[36minfoe[39m: Welcome to Appium v1.2.0 (REV e53f49c706a25242e66d36685c268b599cc18da5)
e[90mdebuge[39m: Non-default server args: {“address”:“127.0.0.1”,“noReset”:true,“log”:“C:\Users\mkarthik\workspace\Android\AppiumMobileAutomation\src\com\log\appiumLogs.txt”}
e[36minfoe[39m: Appium REST http interface listener started on 127.0.0.1:4723
e[36minfoe[39m: LogLevel: debug
e[36minfoe[39m: e[37m–>e[39m e[37mPOSTe[39m e[37m/wd/hub/sessione[39m e[90m{“desiredCapabilities”:{“platform”:“Android”,“platformName”:“Android”,“deviceName”:“hammerhead”,“browserName”:“Chrome”,“appium-version”:“1.2.0.0”,“version”:“4.4.4”}}e[39m
e[90mdebuge[39m: Appium request initiated at /wd/hub/session
e[36minfoe[39m: Retrieving device
e[90mdebuge[39m: Request received with params: {“desiredCapabilities”:{“platform”:“Android”,“platformName”:“Android”,“deviceName”:“hammerhead”,“browserName”:“Chrome”,“appium-version”:“1.2.0.0”,“version”:“4.4.4”}}
e[90mdebuge[39m: The following desired capabilities were provided, but not recognized by appium. They will be passed on to any other services running on this server. : platform, appium-version, version
e[90mdebuge[39m: Looks like we want chrome on android
e[90mdebuge[39m: Creating new appium session 438158c1-1f61-4963-98f0-89ae40efe700
e[90mdebuge[39m: Preparing device for session
e[90mdebuge[39m: Not checking whether app is present since we are assuming it’s already on the device
e[90mdebuge[39m: Checking whether adb is present
e[90mdebuge[39m: Using adb from C:\Users\mkarthik\Documents\selenium\android\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe
e[90mdebuge[39m: Trying to find a connected android device
e[90mdebuge[39m: Getting connected devices…
e[90mdebuge[39m: executing: “C:\Users\mkarthik\Documents\selenium\android\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe” devices
e[90mdebuge[39m: 1 device(s) connected
e[36minfoe[39m: Found device 085d3b920c928938
e[90mdebuge[39m: Setting device id to 085d3b920c928938
e[90mdebuge[39m: Waiting for device to be ready and to respond to shell commands (timeout = 5)
e[90mdebuge[39m: executing: “C:\Users\mkarthik\Documents\selenium\android\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe” -s 085d3b920c928938 wait-for-device
e[90mdebuge[39m: executing: “C:\Users\mkarthik\Documents\selenium\android\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe” -s 085d3b920c928938 shell “echo ‘ready’”
e[90mdebuge[39m: Starting logcat capture
e[90mdebuge[39m: Pushing unlock helper app to device…
e[90mdebuge[39m: executing: “C:\Users\mkarthik\Documents\selenium\android\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe” -s 085d3b920c928938 install “C:\Users\mkarthik\Documents\selenium\Appium\node_modules\appium\build\unlock_apk\unlock_apk-debug.apk”
e[90mdebuge[39m: executing: “C:\Users\mkarthik\Documents\selenium\android\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe” -s 085d3b920c928938 shell “dumpsys window”
e[90mdebuge[39m: Writing dumpsys output to C:\Users\mkarthik\Documents\selenium\Appium\node_modules\appium.dumpsys.log
e[90mdebuge[39m: Screen already unlocked, continuing.
e[90mdebuge[39m: Creating Chrome session
e[90mdebuge[39m: Ensuring Chromedriver exists
e[90mdebuge[39m: Killing any old chromedrivers, running: FOR /F “usebackq tokens=5” %a in (netstat -nao ^| findstr /R /C:"9515 ") do (FOR /F “usebackq” %b in (TASKLIST /FI "PID eq %a" ^| findstr /I chromedriver.exe) do (IF NOT %b==“” TASKKILL /F /PID %b))
e[90mdebuge[39m: No old chromedrivers seemed to exist
e[90mdebuge[39m: Spawning chromedriver with: C:\Users\mkarthik\Documents\selenium\Appium\node_modules\appium\build\chromedriver\windows\chromedriver.exe
e[90mdebuge[39m: [CHROMEDRIVER] Starting ChromeDriver (v2.9.248315) on port 9515
e[90mdebuge[39m: Making http request with opts: {“url”:“http://127.0.0.1:9515/wd/hub/session",“method”:“POST”,“json”:{“sessionId”:null,“desiredCapabilities”:{“chromeOptions”:{“androidPackage”:“com.android.chrome”,“androidDeviceSerial”:"085d3b920c928938”}}}}
e[90mdebuge[39m: Successfully started chrome session
e[36minfoe[39m: e[37m<-- POST /wd/hub/session e[39me[36m303e[39me[90m 5229.410 ms - 9e[39m e[90me[39m
e[90mdebuge[39m: Overriding session id with “191bd83fb24b7a8fcf81f6e7bca1eae9”
e[90mdebuge[39m: Device launched! Ready for commands
e[90mdebuge[39m: Setting command timeout to the default of 60 secs
e[90mdebuge[39m: Appium session started with sessionId 191bd83fb24b7a8fcf81f6e7bca1eae9
e[36minfoe[39m: e[37m–>e[39m e[37mGETe[39m e[37m/wd/hub/session/191bd83fb24b7a8fcf81f6e7bca1eae9e[39m e[90m{}e[39m
e[90mdebuge[39m: Appium request initiated at /wd/hub/session/191bd83fb24b7a8fcf81f6e7bca1eae9
e[90mdebuge[39m: Request received with params: {}
e[90mdebuge[39m: Proxying command to 127.0.0.1:9515
e[90mdebuge[39m: Making http request with opts: {“url”:“http://127.0.0.1:9515/wd/hub/session/191bd83fb24b7a8fcf81f6e7bca1eae9",“method”:"GET”}
e[90mdebuge[39m: Proxied response received with status 200: “{"sessionId":"191bd83fb24b7a8fcf81f6e7bca1eae9","status":0,"value":{"acceptSslCerts":true,"applicationCacheEnabled":false,"browserConnectionEnabled":false,"browserName":"chrome","chrome":{},"cssSelectorsEnabled":true,"databaseEnabled":false,"handlesAlerts":true,"javascriptEnabled":true,"locationContextEnabled":true,"nativeEvents":true,"platform":"ANDROID","rotatable":false,"takesHeapSnapshot":true,"takesScreenshot":true,"version":"38.0.2125.114","webStorageEnabled":true}}”
e[36minfoe[39m: e[37m<-- GET /wd/hub/session/191bd83fb24b7a8fcf81f6e7bca1eae9 e[39me[32m200e[39me[90m 4.262 ms - 476e[39m e[90me[39m
e[36minfoe[39m: e[37m–>e[39m e[37mPOSTe[39m e[37m/wd/hub/session/191bd83fb24b7a8fcf81f6e7bca1eae9/urle[39m e[90m{“url”:“http://staging.gsksource.com/pharma/content/gsk/source/us/en.html”}e[39m
e[90mdebuge[39m: Appium request initiated at /wd/hub/session/191bd83fb24b7a8fcf81f6e7bca1eae9/url
e[90mdebuge[39m: Request received with params: {“url”:“http://staging.gsksource.com/pharma/content/gsk/source/us/en.html”}
e[90mdebuge[39m: Proxying command to 127.0.0.1:9515
e[90mdebuge[39m: Making http request with opts: {“url”:“http://127.0.0.1:9515/wd/hub/session/191bd83fb24b7a8fcf81f6e7bca1eae9/url",“method”:“POST”,“json”:{“url”:"http://staging.gsksource.com/pharma/content/gsk/source/us/en.html”}}
e[90mdebuge[39m: Didn’t get a new command in 60 secs, shutting down…
e[36minfoe[39m: Shutting down appium session
e[90mdebuge[39m: Killing chromedriver
e[90mdebuge[39m: Responding to client with error: {“status”:13,“value”:{“message”:“An unknown server-side error occurred while processing the command.”,“origValue”:“Did not successfully proxy server command”},“sessionId”:“191bd83fb24b7a8fcf81f6e7bca1eae9”}
e[36minfoe[39m: e[37m<-- POST /wd/hub/session/191bd83fb24b7a8fcf81f6e7bca1eae9/url e[39me[31m500e[39me[90m 60026.181 ms - 206e[39m e[90me[39m
An unknown server-side error occurred while processing the command. (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 60.03 seconds
Build info: version: ‘2.42.2’, revision: ‘6a6995d’, time: ‘2014-06-03 17:42:30’
System info: host: ‘mkarthik-W7’, ip: ‘192.168.56.1’, os.name: ‘Windows 7’, os.arch: ‘amd64’, os.version: ‘6.1’, java.version: ‘1.7.0_40’
Session ID: 191bd83fb24b7a8fcf81f6e7bca1eae9
Driver info: io.appium.java_client.AppiumDriver
Capabilities [{platform=ANDROID, acceptSslCerts=true, javascriptEnabled=true, browserName=chrome, chrome={}, rotatable=false, locationContextEnabled=true, version=38.0.2125.114, takesHeapSnapshot=true, cssSelectorsEnabled=true, databaseEnabled=false, handlesAlerts=true, browserConnectionEnabled=false, nativeEvents=true, webStorageEnabled=true, applicationCacheEnabled=false, takesScreenshot=true}]
e[90mdebuge[39m: Chromedriver exited with code null
e[36minfoe[39m: e[37m–>e[39m e[37mGETe[39m e[37m/wd/hub/session/191bd83fb24b7a8fcf81f6e7bca1eae9/contexte[39m e[90m{}e[39m
e[90mdebuge[39m: (killed by signal SIGTERM)
e[90mdebuge[39m: executing: “C:\Users\mkarthik\Documents\selenium\android\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe” -s 085d3b920c928938 shell “am force-stop com.android.chrome”
e[90mdebuge[39m: Appium request initiated at /wd/hub/session/191bd83fb24b7a8fcf81f6e7bca1eae9/context
e[90mdebuge[39m: Request received with params: {}
e[90mdebuge[39m: Proxying command to 127.0.0.1:9515
e[90mdebuge[39m: Making http request with opts: {“url”:“http://127.0.0.1:9515/wd/hub/session/191bd83fb24b7a8fcf81f6e7bca1eae9/context",“method”:"GET”}
e[90mdebuge[39m: Cleaning up appium session
e[90mdebuge[39m: We shut down because no new commands came in
e[90mdebuge[39m: Responding to client with error: {“status”:13,“value”:{“message”:“An unknown server-side error occurred while processing the command.”,“origValue”:“Did not successfully proxy server command”},“sessionId”:null}
e[36minfoe[39m: e[37m<-- GET /wd/hub/session/191bd83fb24b7a8fcf81f6e7bca1eae9/context e[39me[31m500e[39me[90m 1003.680 ms - 176e[39m e[90me[39m
FAILED CONFIGURATION: @BeforeClass beforeClass
org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 1.03 seconds
Build info: version: ‘2.42.2’, revision: ‘6a6995d’, time: ‘2014-06-03 17:42:30’
System info: host: ‘mkarthik-W7’, ip: ‘192.168.56.1’, os.name: ‘Windows 7’, os.arch: ‘amd64’, os.version: ‘6.1’, java.version: ‘1.7.0_40’
Session ID: 191bd83fb24b7a8fcf81f6e7bca1eae9
Driver info: io.appium.java_client.AppiumDriver
Capabilities [{platform=ANDROID, acceptSslCerts=true, javascriptEnabled=true, browserName=chrome, chrome={}, rotatable=false, locationContextEnabled=true, version=38.0.2125.114, takesHeapSnapshot=true, cssSelectorsEnabled=true, databaseEnabled=false, handlesAlerts=true, browserConnectionEnabled=false, nativeEvents=true, webStorageEnabled=true, applicationCacheEnabled=false, takesScreenshot=true}]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:204)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:156)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:599)
at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:88)
at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:93)
at io.appium.java_client.AppiumDriver.getContext(AppiumDriver.java:574)
at com.GSK.NewTest.beforeClass(NewTest.java:59)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84)
at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:564)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:213)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:138)
at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:175)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:107)
at org.testng.TestRunner.privateRun(TestRunner.java:767)
at org.testng.TestRunner.run(TestRunner.java:617)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:335)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:330)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
at org.testng.SuiteRunner.run(SuiteRunner.java:240)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1149)
at org.testng.TestNG.run(TestNG.java:1057)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)

SKIPPED CONFIGURATION: @BeforeMethod beforeMethod
SKIPPED CONFIGURATION: @AfterMethod afterMethod
SKIPPED CONFIGURATION: @AfterClass afterClass
SKIPPED: someFunction

- Screen shot of the pop up:

**

@karthik_holla,

when opening the url in browser from script try following:

driver.get(“http://yourusername:[email protected]/pharma/content/gsk/source/us/en.html”)

let me know if it works for you .

1 Like

Thank you Raghu, It worked… :smile:

Hi @raghuappium:

I’m facing one issue. In my test hybrid application(WebViews), i can’t find/access the element in the pop window(Dynamic functionality coded in javascript(js) I guess, but I’m not sure). How to select the item/navigate to that screen??

Scenario:
When I click the item field button, It will open some pop-window. In that, I have to select the item in the list.
I’m able to access the element of that button. But not that pop-windows.

Generally, How to access the elements which is coded in javascript in webviews? If you found any discrepancies in my point, please suggest/provide resolution to myself.

@PRABU90,

It would be good if you can share the UIAutomator screen output for an element, the code your are trying.and log erros for the debug.

@raghuappium: In chrome browser, I’m able to find the pop-up element with help of inspect devices. (chrome browser > Tools > Inspect devices ). I have captured the element also. Now its working fine for me.

can anyone tell me about sending text for the text fields present on screen.
I tried using below mentioned method but it’s not working…

driver.findElementById(“com.apptivateme.next.la:id/etPassword”).sendKeys("[email protected]");