2014-05-22 2 views
4

하이브리드 응용 프로그램에서 테스트 사례를 실행하려고했습니다. driver.context("WEBVIEW")을 사용하여 WebView로 전환 할 수 있습니다.
하지만 webview로 전환 한 후 driver.findElement() 메서드는 webview에서 수행하지 못하며 아래와 같이 Appium 서버에서 오류를 반환합니다. 이 문제를 해결하는 방법을 도와 주시겠습니까?WebView로 전환 한 후 Appium 스크립트가 작동하지 않습니다.

아래 내 테스트 스크립트는 다음과 같습니다

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(); 

은 다음 코드는 작동하지 않는다 : 여기

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

그리고있다 Appium 서버 로그에서 오류 메시지 :

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 

동의어, 나는 Ap 소스에서 pium 1.0.0 서버 (> node appium.js --no-reset).

+0

장치를 다시 시작하고 시도하십시오 driver.context하는 ("WEBVIEW_1을") ("웹보기"를) driver.context 변경 appium의 GUI 버전을 사용하십시오. –

+0

테스트 실행 중에 항상 chromedriver를 모니터링하여 수정 사항을 얻을 수 있었지만 chromedriver가 응답하지 않게되고 natiove_app에서 webview로 다시 전환되었습니다. 나는 https://github.com/mi2pankaj/chromeDriverHandler에서 사용할 수있는 작은 코드를 개발했다. 모든 문제를 해결했다.이 jar chromedriverHandler.jar을 프로젝트에 추가하고 ChromedriverHandler.chromeDriverHandlerThread(). start();를 사용한다. beforeclass/beforetest 및 ChromedriverHandler.chromeDriverHandlerThread(). stop(); 애프터 클래스/애프터 테스트에서 –

답변

0

저는 WebView에서 xpath로 요소를 찾는 것이 효과가 없다고 생각합니다. 내가 성공한 요소를 찾는 유일한 방법은 By.CSS_SELECTOR이고 요소 클래스는 (.menu-item)입니다. xlzdew @

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

+0

그건 끔찍한 오해의 소지가있어. 이것은 다운 투표해야합니다 – Huy

0

다른,

관련 문제