2016-08-12 180 views
1

Appium預定的測試(詹金斯)失敗讓這種日誌消息:Appium詹金斯測試執行凍結

project.CardManagementTest.setUp FAILED 
    org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: Cannot stop and clear com.ao.demo. Original error: Error executing adbExec. Original error: Command '/Users/administrator/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 shell pm clear com.ao.demo' timed out after 20000ms{"stdout":"","stderr":"","code":null} (WARNING: The server did not provide any stacktrace information) 
    Command duration or timeout: 212.78 seconds 
    Build info: version: '2.53.1', revision: 'a36b8b1cd5757287168e54b817830adce*****', time: '2016-06-30 19:26:09' 
    System info: host: 'macprobuild.corp.com', ip: '153.86,***.***', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.11.4', java.version: '1.8.0_73' 
    Driver info: io.appium.java_client.android.AndroidDriver 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
     at java.lang.reflect.Constructor.newInstance(Constructor.java:422) 
     at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206) 
     at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158) 
     at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:678) 
     at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:51) 
     at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1) 
     at io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1) 
     at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:249) 
     at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131) 
     at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:144) 
     at io.appium.java_client.DefaultGenericMobileDriver.<init>(DefaultGenericMobileDriver.java:47) 
     at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:114) 
     at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:132) 
     at io.appium.java_client.android.AndroidDriver.<init>(AndroidDriver.java:97) 
     at config.DesiredCapabilitiesSetup.startAppiumServer(DesiredCapabilitiesSetup.java:74) 
     at foundation.CardManagementTest.setUp(CardManagementTest.java:44) 

,其在執行時,我真的在服務器機器前面的奇怪的事情。但是,如果我離開服務器機器大約30分鐘並遠程構建,它將會失敗。

服務器機器已配置爲: - 阻止計算機進行睡眠自動操作。 - 網絡訪問喚醒 - 啓用電源小睡。

在我的本地計算機上運行測試並始終給出成功結果。 在服務器機器上有一些測試計劃用於其他設備,但沒有實際的設備通過USB連接到服務器機器。 我的測試運行在模擬器上。

我期望的能力是:

package config; 

import com.***.moo.webcalls.AOEnvironment; 
import com.***.moo.webcalls.AOWebClient; 
import io.appium.java_client.AppiumDriver; 
import io.appium.java_client.android.AndroidDriver; 
import io.appium.java_client.android.AndroidElement; 
import io.appium.java_client.remote.MobileCapabilityType; 
import io.appium.java_client.remote.MobilePlatform; 
import org.apache.commons.codec.binary.Base64; 
import org.apache.commons.io.FileUtils; 
import org.openqa.selenium.OutputType; 
import org.openqa.selenium.remote.DesiredCapabilities; 
import org.testng.annotations.BeforeClass; 

import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.net.MalformedURLException; 
import java.net.URL; 
import java.util.Scanner; 
import java.util.UUID; 
import java.util.concurrent.TimeUnit; 


public class DesiredCapabilitiesSetup { 



    @BeforeClass 


    public static AndroidDriver<AndroidElement> startAppiumServer() throws IOException { 
// Taking App/Device/Link path from *txt file located in the project // 
     /* 
     String appLink = FileUtils.readFileToString(new File("appConfigurations/appLink.txt")); 
     String deviceName = FileUtils.readFileToString(new File("appConfigurations/deviceName.txt")); 
     String appName = FileUtils.readFileToString(new File("appConfigurations/appName.txt")); 
     */ 
//                // 
     String appLink = FileUtils.readFileToString(new File("appConfigurations/appLink.txt")); 
     String deviceName = FileUtils.readFileToString(new File("appConfigurations/deviceName.txt")); 
     String appName = FileUtils.readFileToString(new File("appConfigurations/appName.txt")); 



     DesiredCapabilities cap = new DesiredCapabilities(); 
     cap.setCapability(MobileCapabilityType.PLATFORM_NAME, MobilePlatform.ANDROID); 
     cap.setCapability(MobileCapabilityType.DEVICE_NAME,deviceName); 
     cap.setCapability(MobileCapabilityType.VERSION,"6.0"); 
     cap.setCapability("avd","nexus"); 
     File appSource= new File(appLink); 
     File app=new File(appSource, appName); 
     cap.setCapability(MobileCapabilityType.APP, app.getAbsolutePath()); 

     AndroidDriver<AndroidElement> driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap); 
     driver.manage().timeouts().implicitlyWait(80, TimeUnit.SECONDS); 




     return driver; 
    } 



} 

現在,我不`噸從那裏這個問題的根源理解。 It It Emulator或Adb或Jenkins或DesiredCap配置。

org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: Cannot stop and clear com.ao.demo. Original error: Error executing adbExec. Original error: Command '/Users/administrator/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 shell pm clear com.ao.demo' timed out after 20000ms{"stdout":"","stderr":"","code":null} (WARNING: The server did not provide any stacktrace information) 
    Command duration or timeout: 212.78 seconds 

設置

@BeforeClass 
    public void setUp() throws Exception { 

     driver = DesiredCapabilitiesSetup.startAppiumServer(); 
     aoWebClient = DesiredCapabilitiesSetup.getAOWeb(); 


     LogIn logIn = new LogIn(driver,aoWebClient); 
     logIn.logIn(); 
    } 
+0

如果我連接真正的設備詹金斯和Appium的偉大作品。 但與模擬器我得到這些錯誤消息。 –

回答

0

--avd下appium能力棄用。

public static AndroidDriver<WebElement> ANDROID_DRIVER; 
ANDROID_DRIVER = new AndroidDriver<WebElement>(serverAddress, capabilities); 

我定義ANDROID_DRIVER全球 此外,您可以請貼CardManagementTest.setUp代碼?

+0

我添加了描述。 它在連接到服務器機器的實際設備上運行得很好。 但是當我配置爲運行模擬器時,由於模擬器問題,它可以連續成功運行6次,並且在失敗2-3次後失敗。 也許問題的發生是因爲在每個測試套件執行後仿真程序進程沒有被殺死? –