首页 > 解决方案 > 尝试使用 appium 连接到模拟器。收到“无法连接到 localhost/127.0.0.1:4723”

问题描述

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.remote.DesiredCapabilities;

import java.net.MalformedURLException;
import java.net.URL;


import io.appium.java_client.MobileElement;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;
import io.appium.java_client.remote.MobileCapabilityType;

@SuppressWarnings("SpellCheckingInspection")
public class AutomateCalci2 {
    AndroidDriver<AndroidElement> ad; AndroidDriver<AndroidElement> ad;
        @Before
        public void setUp() throws MalformedURLException {
    
            DesiredCapabilities dc = new DesiredCapabilities();
            dc.setCapability(MobileCapabilityType.DEVICE_NAME, "emulator-5556");
            dc.setCapability("PlatformName", "android");
            dc.setCapability("appPackage", "com.android.calculator2");
            dc.setCapability("appActivity", ".Calculator");
    
            URL url = new URL("http://127.0.0.1:4723/wd/hub");
            ad = new AndroidDriver<>(url, dc);
        }
}
Error :   

org.openqa.selenium.SessionNotCreatedException: Unable to create a new remote session. Original error: Failed to connect to /127.0.0.1:4723
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: host: 'localhost', ip: '127.0.0.1', os.name: 'Linux', os.arch: 'i686', os.version: '5.4.61-android11-0-00791-gbad091cc4bf3-ab6833933', java.version: '0'
Driver info: driver.version: AndroidDriver
    at 

io.appium.java_client.remote.AppiumCommandExecutor$1.createSession(AppiumCommandExecutor.java:216) 在 io.appium.java_client.remote.AppiumCommandExecutor.createSession(AppiumCommandExecutor.java:225) 在 io.appium.java_client.remote.AppiumCommandExecutor.execute (AppiumCommandExecutor.java:247) 在 org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552) 在 io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:41) 在 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:213) at io .appium.java_client.AppiumDriver.startSession(AppiumDriver.java:338) 在 org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:131) 在 io.appium。java_client.DefaultGenericMobileDriver.(DefaultGenericMobileDriver.java:37) 在 io.appium.java_client.AppiumDriver.(AppiumDriver.java:89) 在 io.appium.java_client.AppiumDriver.(AppiumDriver.java:99) 在 io.appium.java_client。 android.AndroidDriver.(AndroidDriver.java:96) at com.example.demo.AutomateCalci2.setUp(AutomateCalci2.java:32) at java.lang.reflect.Method.invoke(Native Method) at org.junit.runners.model .FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) 在 org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 在 org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java: 47) 在 androidx.test.internal.runner.junit4.statement.RunBefores.evaluate(RunBefores.java:76) 在 androidx.test.internal.runner.junit4.statement.RunAfters.evaluate(RunAfters.java:61) 在 org .junit.runners.ParentRunner。runLeaf(ParentRunner.java:325) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at org.junit.runners.ParentRunner $3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner $1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit。 runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org .junit.runners.Suite.runChild(Suite.java:128) at org.junit.runners.Suite.runChild(Suite.java:27) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 在 org.junit.runners。ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit .runners.ParentRunner.run(ParentRunner.java:363) 在 org.junit.runner.JUnitCore.run(JUnitCore.java:137) 在 org.junit.runner.JUnitCore.run(JUnitCore.java:115) 在 androidx。 test.internal.runner.TestExecutor.execute(TestExecutor.java:56) at androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:395) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:2205)引起:java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke(Native Method) at io.appium.java_client.remote.AppiumCommandExecutor$1.createSession(AppiumCommandExecutor.java:193) ... 42 更多通过:java.net.ConnectException:无法在 okhttp3.internal.connection.RealConnection.connect(RealConnection.java:165) 在 okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:247) 处连接到 /127.0.0.1:4723 .StreamAllocation.findConnection(StreamAllocation.java:257) 在 okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:135) 在 okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:114) 在 okhttp3.internal。 connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42) 在 okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) 在 okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) 在 okhttp3.internal .cache.CacheInterceptor.intercept(CacheInterceptor.java:93) 在 okhttp3.internal.http.RealInterceptorChain。继续(RealInterceptorChain.java:147)在 okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)在 okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)在 okhttp3.internal.http.RealInterceptorChain .proceed(RealInterceptorChain.java:147) 在 okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:126) 在 okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) 在 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) 在 io.appium.java_client.remote.AppiumCommandExecutor.lambda$1(AppiumCommandExecutor.java:162)在 io.appium.java_client.remote.-$$Lambda$AppiumCommandExecutor$ugxFyNh-3C39Ft1S_xMmdYNBRGY.execute(未知来源:2)在 org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:105).. . 44 更多原因:java.net.ConnectException:在 120000 毫秒后无法从 /127.0.0.1(端口 37078)连接到 /127.0.0.1(端口 4723):isConnected 失败:在 libcore.io.IoBridge 的 ECONNREFUSED(连接被拒绝) .isConnected(IoBridge.java:287) 在 libcore.io.IoBridge.connectErrno(IoBridge.java:192) 在 libcore.io.IoBridge.connect(IoBridge.java:134) 在 java.net.PlainSocketImpl.socketConnect(PlainSocketImpl. java:142) 在 java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390) 在 java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230) 在 java.net.AbstractPlainSocketImpl。连接(AbstractPlainSocketImpl.java:212)在 java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436) 在 java.net.Socket.connect(Socket.java:621) 在 okhttp3.internal.platform.AndroidPlatform.connectSocket(AndroidPlatform .java:73) at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:245) ... 65 更多原因:android.system.ErrnoException:isConnected 失败:libcore.io.IoBridge 的 ECONNREFUSED(连接被拒绝) .isConnected(IoBridge.java:274) ... 75 更多libcore.io.IoBridge.isConnected(IoBridge.java:274) 处的 ECONNREFUSED(连接被拒绝)... 75 更多libcore.io.IoBridge.isConnected(IoBridge.java:274) 处的 ECONNREFUSED(连接被拒绝)... 75 更多

Tests ran to completion.

标签: androidappium

解决方案


  1. 在功能中添加自动化名称和版本功能:

    dc.setCapability("automationName","UIAutomator2");

    dc.setCapability("版本","10");

    [无论哪个版本,您的模拟器正在运行]

  2. 尝试以管理员身份调用 appium 或使用命令行。


推荐阅读