AWS设备场收到异常连接超时错误

时间:2020-02-04 14:10:00

标签: java appium-android aws-device-farm

我正在使用Java和TestNG为本机应用程序创建Appium测试。该测试在本地可以正常运行,但会出现错误: org.openqa.selenium.SessionNotCreatedException:无法创建新的远程会话。原始错误:连接超时

以下是测试的详细信息。非常感谢您提供的帮助...长期为解决此错误而苦恼。

内部版本信息:版本:'3.141.59',修订版本:'e82be7d358',时间:'2018-11-14T08:17:03' 系统信息:主机:'ip-172-xx-xx-xx',ip:'172.xx.xx.xx',操作系统名称:'Linux',os.arch:'amd64',os.version:' 3.13.0-139-generic',java.version:'1.8.0_151'

appium v​​1.7.2 节点v10.14.0 Java客户端7.0.0 测试NG 6.14.3 平台-Android 平台操作系统版本-8.0

代码:

public class TafBase_Service {
    DesiredCapabilities appCapabilities=null;
    AppiumDriver appDriv = null;
    @BeforeTest
    @Parameters({ "jobId", "brand", "appiumServerURL", "executionMode", "platform", "deviceType", "osVersion","deviceName", "mobileAppPath", "udid", "testEnvironment", "appPackage", "appActivity" })
    public void setupDevice(String jobId,String brand,String appiumServerURL,String executionMode,String platform,String deviceType,String osVersion,String deviceName,String mobileAppPath,String udid,String testEnvironment,String appPackage,String appActivity){
    appCapabilities = new DesiredCapabilities();
    appCapabilities.setCapability("newCommandTimeout", 300000);
    appCapabilities.setCapability("platformName", platform);
    appCapabilities.setCapability("platformVersion", osVersion);
    appCapabilities.setCapability("deviceName", deviceName);
    appCapabilities.setCapability("udid", udid);
    appCapabilities.setCapability("app", mobileAppPath);
    appCapabilities.setCapability("autoAcceptAlerts", true);
    appCapabilities.setCapability("automationName", "UiAutomator2");
    appCapabilities.setCapability("appPackage", appPackage);
    appCapabilities.setCapability("appActivity", appActivity);
    appCapabilities.setCapability("uiautomator2ServerInstallTimeout", 60000);
    appCapabilities.setCapability("uiautomator2ServerLaunchTimeout", 60000);
    appCapabilities.setCapability(capabilityName, value);
    appCapabilities.setCapability("systemPort", randomPort());

    try {
      URL url = new URL(appiumServerURL);
      appDriv = new AppiumDriver(url, appCapabilities);
      System.out.println("Appium server started");
    } catch (MalformedURLException e) {
      System.out.println("Appium Server could not be started...malformed exception occured.");
      e.printStackTrace();
    } catch (Exception e) {
      System.out.println("Appium Server could not be started");
      e.printStackTrace();
    }

    appDriv.manage().timeouts().implicitlyWait(300, TimeUnit.SECONDS);

}

Appium CLI命令: appium --log-timestamp-设备名称$ DEVICEFARM_DEVICE_NAME-平台名称$ DEVICEFARM_DEVICE_PLATFORM_NAME --app $ DEVICEFARM_APP_PATH --udid $ DEVICEFARM_DEVICE_UDID --chromedriver-executable $ DEVICEFARM_CHROMEDRIVER_EXECUTABLE-会话/覆盖>>日志2>&1&

测试运行命令: java -cp“ ../dependency-jars/* :.” org.testng.TestNG testng.xml -d $ DEVICEFARM_LOG_DIR / test-output -verbose 10

测试规范+ Appium日志:

[DEVICEFARM] Setting up your device. This usually takes 2-3 minutes.
[DEVICEFARM] ########### Start executing testspec ###########


[DEVICEFARM] ########### Entering phase install ###########


[DEVICEFARM] ########### Entering phase pre_test ###########

[DeviceFarm] export CLASSPATH=$CLASSPATH:$DEVICEFARM_TESTNG_JAR
[DeviceFarm] export CLASSPATH=$CLASSPATH:$DEVICEFARM_TEST_PACKAGE_PATH/*
[DeviceFarm] export CLASSPATH=$CLASSPATH:$DEVICEFARM_TEST_PACKAGE_PATH/dependency-jars/*
[DeviceFarm] echo "Start appium server"
Start appium server
[DeviceFarm] appium --log-timestamp --device-name $DEVICEFARM_DEVICE_NAME --platform-name $DEVICEFARM_DEVICE_PLATFORM_NAME --app $DEVICEFARM_APP_PATH --udid $DEVICEFARM_DEVICE_UDID --chromedriver-executable $DEVICEFARM_CHROMEDRIVER_EXECUTABLE --session-override >> $DEVICEFARM_LOG_DIR/appiumlog.txt 2>&1 &
[DeviceFarm] start_appium_timeout=0; while [ true ]; do
    if [ $start_appium_timeout -gt 60 ];
    then
        echo "appium server never started in 60 seconds. Exiting";
        exit 1;
    fi;
    grep -i "Appium REST http interface listener started on 0.0.0.0:4723" $DEVICEFARM_LOG_DIR/appiumlog.txt >> /dev/null 2>&1;
    if [ $? -eq 0 ];
    then
        echo "Appium REST http interface listener started on 0.0.0.0:4723";
        break;
    else
        echo "Waiting for appium server to start. Sleeping for 1 second";
        sleep 1;
        start_appium_timeout=$((start_appium_timeout+1));
    fi;
done; 
Waiting for appium server to start. Sleeping for 1 second
Waiting for appium server to start. Sleeping for 1 second
Waiting for appium server to start. Sleeping for 1 second
Waiting for appium server to start. Sleeping for 1 second
Waiting for appium server to start. Sleeping for 1 second
Waiting for appium server to start. Sleeping for 1 second
Waiting for appium server to start. Sleeping for 1 second
Waiting for appium server to start. Sleeping for 1 second
Waiting for appium server to start. Sleeping for 1 second
Waiting for appium server to start. Sleeping for 1 second
Waiting for appium server to start. Sleeping for 1 second
Waiting for appium server to start. Sleeping for 1 second
Appium REST http interface listener started on 0.0.0.0:4723
[DEVICEFARM] ########### Entering phase test ###########

[DeviceFarm] echo "Navigate to test package directory"
Navigate to test package directory
[DeviceFarm] cd $DEVICEFARM_TEST_PACKAGE_PATH
[DeviceFarm] cd test-classes
[DeviceFarm] echo "Start Appium TestNG test"
Start Appium TestNG test
[DeviceFarm] java -cp "../dependency-jars/*:." org.testng.TestNG testng.xml -d $DEVICEFARM_LOG_DIR/test-output -verbose 10
...
... TestNG 6.14.3 by Cédric Beust (cedric@beust.com)
...
[TestNG] RUNNING: Suite: "xxxx Android - SignUp" containing "1" Tests (config: /tmp/scratchDX56zA.scratch/test-packageNGfIFy/test-classes/testng.xml)
[TestNG] INVOKING CONFIGURATION: "xxxx Android - SignUp" - @BeforeTest com.xxxx.framework.TafBase_Service.setupDevice(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)(value(s): "1", "xxxx", "http://0.0.0.0:4723/wd/hub", "jenkins", "Android", "Simulator", "8.0", "Samsung galaxy S8", "/Users/deepeshb/Apps/xxxx_STG_4Oct.apk", "emulator-5554", "STG", "com.xxx.xxx.wp_staging", "com.xx.android.xx.xx.login.LoginActivity")
Appium Server could not be started
org.openqa.selenium.SessionNotCreatedException: Unable to create a new remote session. Original error: connect timed out
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'ip-172-31-13-65', ip: '172.31.13.65', os.name: 'Linux', os.arch: 'amd64', os.version: '3.13.0-139-generic', java.version: '1.8.0_151'
Driver info: driver.version: AppiumDriver
    at io.appium.java_client.remote.AppiumCommandExecutor$1.createSession(AppiumCommandExecutor.java:208)
    at io.appium.java_client.remote.AppiumCommandExecutor.createSession(AppiumCommandExecutor.java:217)
    at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:239)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
    at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:42)
    at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
    at io.appium.java_client.DefaultGenericMobileDriver.<init>(DefaultGenericMobileDriver.java:38)
    at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:84)
    at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:94)
    at com..framework.TafBase_Service.setupDevice(TafBase_Service.java:42)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
    at org.testng.internal.MethodInvocationHelper.invokeMethodConsideringTimeout(MethodInvocationHelper.java:59)
    at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:458)
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:222)
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:142)
    at org.testng.TestRunner.beforeRun(TestRunner.java:529)
    at org.testng.TestRunner.run(TestRunner.java:497)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
    at org.testng.SuiteRunner.run(SuiteRunner.java:364)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
    at org.testng.TestNG.runSuites(TestNG.java:1049)
    at org.testng.TestNG.run(TestNG.java:1017)
    at org.testng.TestNG.privateMain(TestNG.java:1354)
    at org.testng.TestNG.main(TestNG.java:1323)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at io.appium.java_client.remote.AppiumCommandExecutor$1.createSession(AppiumCommandExecutor.java:186)
    ... 34 more
Caused by: java.net.SocketTimeoutException: connect timed out
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:204)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at okhttp3.internal.platform.Platform.connectSocket(Platform.java:129)
    at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:245)
    at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:165)
    at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:257)
    at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:135)
    at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:114)
    at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
    at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
    at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
    at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:126)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
    at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200)
    at okhttp3.RealCall.execute(RealCall.java:77)
    at org.openqa.selenium.remote.internal.OkHttpClient.execute(OkHttpClient.java:103)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:105)

0 个答案:

没有答案