Appium詹金斯测试执行冻结
问题描述:
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();
}
答
--avd下appium能力弃用。
public static AndroidDriver<WebElement> ANDROID_DRIVER;
ANDROID_DRIVER = new AndroidDriver<WebElement>(serverAddress, capabilities);
我定义ANDROID_DRIVER全球 此外,您可以请贴CardManagementTest.setUp代码?
+0
我添加了描述。 它在连接到服务器机器的实际设备上运行得很好。 但是当我配置为运行模拟器时,由于模拟器问题,它可以连续成功运行6次,并且在失败2-3次后失败。 也许问题的发生是因为在每个测试套件执行后仿真程序进程没有被杀死? –
如果我连接真正的设备詹金斯和Appium的伟大作品。 但与模拟器我得到这些错误消息。 –