Appium scripts do not work after switching to WebView

I tried to run test cases in a hybrid application. I can switch to WebView with driver.context("WEBVIEW").
But after I switch to web browsing, the method driver.findElement()does not execute in webview mode, and it returns an error on the Appium server, as shown below. Could you help me solve this problem?

Below are my test cases:

    DesiredCapabilities capabilities = new DesiredCapabilities();

    capabilities.setCapability(CapabilityType.BROWSER_NAME, "");

    capabilities.setCapability("deviceName","066e28s70b115a3b");

    capabilities.setCapability("platformVersion", "4.4.2");

    capabilities.setCapability("platformName","Android");

    capabilities.setCapability("app", "/Users/lin/codes/tester.apk");

    capabilities.setCapability("app-package", "com.test.tester");

    capabilities.setCapability("app-activity", "com.test.tester.myActivity");

    AppiumDriver driver = new AppiumDriver(new URL("http://my.local.address:4723/wd/hub"), capabilities);


     Set<String> contextNames = driver.getContextHandles();

     System.out.println(contextNames.size());

     for (String contextName : contextNames) {

       System.out.println(contextName);

       if (contextName.contains("WEBVIEW")){

         driver.context(contextName);

       }

     }

     Thread.sleep(5000);

     driver.findElement(By.xpath("//div[@class='item item-entrance']/h2[@class='grey-title mb20']")).click();

The following code does not work:

 driver.findElement(By.xpath("//div[@class='item item-entrance']/h2[@class='grey-title mb20']")).click();

And here is the error message from the Appium server log:

info: Available contexts: NATIVE_APP,WEBVIEW_1

info: Responding to client with success: {"status":0,"value":["NATIVE_APP","WEBVIEW_1"],"sessionId":"7dd9ea41-f47c-4466-a108-21ce90284ad1"}

GET /wd/hub/session/7dd9ea41-f47c-4466-a108-21ce90284ad1/contexts 200 50ms - 124b

debug: Appium request initiated at /wd/hub/session/7dd9ea41-f47c-4466-a108-21ce90284ad1/context

debug: Request received with params: {"name":"WEBVIEW_1"}

info: Getting a list of available webviews

debug: executing: "/Users/lin/tools/android-sdk-macosx/platform-tools/adb" -s 066e28s70b115a3b shell "cat /proc/net/unix"

info: ["webview_devtools_remote_20051"]

info: Available contexts: NATIVE_APP,WEBVIEW_1

info: Connecting to chrome-backed webview

info: Creating Chrome session

info: Ensuring Chromedriver exists

info: Killing any old chromedrivers, running: ps -e | grep /Users/lin/codes/appiumGit/appium/build/chromedriver/mac/chromedriver | grep -v grep |grep -e '--port=9515$' | awk '{ print $1 }' | xargs kill -15

info: Successfully cleaned up old chromedrivers

info: Spawning chromedriver with: /Users/lin/codes/appiumGit/appium/build/chromedriver/mac/chromedriver

info: [CHROMEDRIVER] Starting ChromeDriver (v2.10.267517) on port 9515

Only local connections are allowed.

info: Making http request with opts: {"url":"http://my.local.address:9515/wd/hub/session","method":"POST","json":{"sessionId":null,"desiredCapabilities":{"chromeOptions":{"androidPackage":"com.test.tester","androidUseRunningApp":true,"androidDeviceSerial":"066e28s70b115a3b"}}}}

info: Could not connect yet; retrying

info: Making http request with opts: {"url":"http://my.local.address:9515/wd/hub/session","method":"POST","json":{"sessionId":null,"desiredCapabilities":{"chromeOptions":{"androidPackage": "com.test.tester","androidUseRunningApp":true,"androidDeviceSerial":"066e28s70b115a3b"}}}}

info: Didn't get a new command in 60 secs, shutting down...

info: Shutting down appium session...

info: [ADB] Pressing the HOME button

debug: executing: "/Users/lingzhixiang/tools/android-sdk-macosx/platform-tools/adb" -s 066e28s70b115a3b shell "input keyevent 3"

info: Stopping logcat capture

debug: Logcat terminated with code null, signal SIGTERM

info: Cleaning up Chromedriver

info: Killing chromedriver

info: Responding to client with error: {"status":13,"value":{"message":"An unknown server-side error occurred while processing the command. (Original error: socket hang up)","code":"ECONNRESET","origValue":"socket hang up"},"sessionId":"7dd9ea41-f47c-4466-a108-21ce90284ad1"}

POST /wd/hub/session/7dd9ea41-f47c-4466-a108-21ce90284ad1/context 500 60649ms - 270b

info: Chromedriver exited with code null

info: (killed by signal SIGTERM)

info: [BOOTSTRAP] [info] Got data from client: {"cmd":"shutdown"}

info: [BOOTSTRAP] [info] Got command of type SHUTDOWN

info: [BOOTSTRAP] [info] Returning result: {"value":"OK, shutting down","status":0}

info: [BOOTSTRAP] [info] Closed client connection

By the way, I started the Appium 1.0.0 server from the source (> node appium.js --no- reset).

+4
source share
2 answers

, WebView, xpath . , , - By.CSS_SELECTOR (.menu-item).

http://appium.io/slate/en/v1.2.0/?java#automating-hybrid-android-apps

0

@xlzdew , driver.context( "WEBVIEW" ) driver.context( "WEBVIEW_1" )

0

Source: https://habr.com/ru/post/1541616/


All Articles