2016-01-22 5 views
0

Я автоматизирую приложение для Android, используя appium. Создал драйвер, используя url. Здесь я дал пустую строку для мобильного веб-браузера, потому что я непосредственно автоматизирую приложение.Unreachable Browser Exception с Appium

Вот код appium,

public class Cal { 
    private static AndroidDriver driver; 
    public static void main(String[] args) throws MalformedURLException, InterruptedException{ 
    File app = new File("C:\\Users\\Priya\\Desktop\\FitbaseApk\\Fitbase_01_21_2016_APK.apk"); 

DesiredCapabilities capabilities = new DesiredCapabilities(); 
capabilities.setCapability(CapabilityType.BROWSER_NAME, ""); 
capabilities.setCapability("deviceName", "Lenovo- A7000-a"); 
capabilities.setCapability("platformVersion", "5.0"); 
capabilities.setCapability("platformName", "Android"); 
capabilities.setCapability("app", app.getAbsolutePath()); 
    capabilities.setCapability("appPackage", "com.ionicframework.fitbase444706"); 
capabilities.setCapability("appActivity","com.ionicframework.fitbase444706.mainActivity"); 

    driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); 
    driver.manage().timeouts().implicitlyWait(80, TimeUnit.SECONDS); 
    Thread.sleep(10000); 
} 
} 

Ниже журналы ошибок:

Exception in thread "main" org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure. 
Build info: version: '2.49.0', revision: '365eeb4', time: '2016-01-13 18:33:29' 
System info: host: 'QA1-PC', ip: '192.168.0.82', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_71' 
Driver info: driver.version: AndroidDriver 
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:665) 
at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:42) 
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:37) 
at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:161) 
at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:170) 
at io.appium.java_client.android.AndroidDriver.<init>(AndroidDriver.java:82) 
at FitbaseApp.Cal.main(Cal.java:37) 
Caused by: org.openqa.selenium.WebDriverException: org.apache.http.conn.HttpHostConnectException: Connect to 127.0.0.1:4723 [/127.0.0.1] failed: Connection refused: connect 
Build info: version: '2.49.0', revision: '365eeb4', time: '2016-01-13 18:33:29' 
System info: host: 'QA1-PC', ip: '192.168.0.82', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_71' 
Driver info: driver.version: AndroidDriver 
at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:79) 
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:644) 
... 11 more 
Caused by: org.apache.http.conn.HttpHostConnectException: Connect to 127.0.0.1:4723 [/127.0.0.1] failed: Connection refused: connect 
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:151) 
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353) 
at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380) 
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236) 
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184) 
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88) 
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) 
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184) 
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:71) 
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55) 
at org.openqa.selenium.remote.internal.ApacheHttpClient.fallBackExecute(ApacheHttpClient.java:143) 
at org.openqa.selenium.remote.internal.ApacheHttpClient.execute(ApacheHttpClient.java:89) 
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:142) 
at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:67) 
... 12 more 
Caused by: java.net.ConnectException: Connection refused: connect 
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) 
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85) 
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) 
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) 
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) 
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 
at java.net.Socket.connect(Socket.java:589) 
at org.apache.http.conn.socket.PlainConnectionSocketFactory.connectSocket(PlainConnectionSocketFactory.java:74) 
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:134) 
... 25 more 

ответ

1

Выпуск находится в.

HttpHostConnectException: Connect to 127.0.0.1:4723 [/127.0.0.1] failed:

Попробуйте перезапустить appijum сервер, если проблема не устранена попробуйте изменить номер порта сервера и в коде enter image description here

+0

Спасибо, Karthick23 за ответ. Я получил решение для этого. Проблема возникает, потому что для appium требуется относительно долгое время. Вы можете увидеть его в конце, когда я дал «driver.manage(). Timeouts(). ImplicitlyWait (80, TimeUnit.SECONDS);». Я удалил его, теперь он работает нормально. –

+0

@Lakshmi Priya это хорошо .. если вы чувствуете, что если вы узнали что-нибудь полезное из моего ответа, пожалуйста, воздержитесь от него. Заранее спасибо – karthick23

+0

ok. Я верю, что он добавится, как только вы обретете свою репутацию. – karthick23

1

Я получил решение для этого. Проблема возникает, потому что для appium требуется относительно долгое время. Вы можете увидеть его в конце, когда я дал «driver.manage(). Timeouts(). ImplicitlyWait (80, TimeUnit.SECONDS);». Здесь я уменьшил время, теперь он работает нормально.

1

С приведенным выше кодом вы не должны ставить фиксированный Thread.Sleep вообще, потому что вы никогда не знаете, как долго appium собирается начать. Лучший способ - запустить appium программно, а затем контролировать http://localhost:4723, здесь всегда работает appium. Вам нужно продолжать отправлять запрос на этот URL-адрес и ждать, пока вы получите ответ от этого URL-адреса, как только вы получите ответ, где вы должны инициализировать драйвер, что-то вроде этого, если вы это понимаете, я опубликую весь код, httpClientWrap - это мой библиотека.

public static boolean waitForAppiumServer() 
    { 
     boolean flag = false; 

     for(int i=0; i<=20; i++) 
     {  
      String status = httpClientWrap.sendGetRequest("http://localhost:4723/wd/status"); 

      if(!status.isEmpty()) 
      { 
       logger.info("appium service has been launched successfully. "); 

       flag = true; 
       break; 
      } 

      logger.info("appium service has not been launched, waiting to get started .... attempt: "+i); 

      try {Thread.sleep(3000);} catch (InterruptedException e) {} 
     } 

     return flag; 
    } 
+0

Спасибо Pankaj за повторное воспроизведение, я удалил Thread.Sleep –