我正在尝试使用Java引发此错误在Eclipse IDE中测试我的应用程序。我也启动了appium服务器。也提供了匹配的端口号。这是我的日志跟踪。帮帮我。谢谢
这是我用于使用appium测试我的android应用程序的代码:
public class MilonowFirstTest {
static AppiumDriver<WebElement> driver;
// @BeforeClass
public static void main(String[] args) throws MalformedURLException
//public void Setup() throws MalformedURLException
{
DesiredCapabilities cap = new DesiredCapabilities();
//cap.setCapability(AndroidMobileCapabilityType.De, value);
cap.setCapability(MobileCapabilityType.DEVICE_NAME, "Android emulator");
//cap.setCapability(MobileCapabilityType.APP_PACKAGE, value);
cap.setCapability(AndroidMobileCapabilityType.APP_PACKAGE, "com.test.myapp");
//cap.setCapability(MobileCapabilityType.APP, "");
cap.setCapability("avd", "Honor 7X API 27");
cap.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
cap.setCapability(MobileCapabilityType.PLATFORM_VERSION, "23");
cap.setCapability(MobileCapabilityType.AUTOMATION_NAME, "Appium");
driver = new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4723/wb/hub"), cap);
Assert.assertNotNull(driver.getContext());
}
// @Test()
// public void SimpleTest()
// {
// Assert.assertNotNull(driver.getContext());
// }
}
错误日志:
Exception in thread "main" org.openqa.selenium.WebDriverException: It is impossible to create a new session because 'createSession' which takes HttpClient, InputStream and long was not found or it is not accessible
Build info: version: '3.12.0', revision: '7c6e0b3', time: '2018-05-08T15:15:03.216Z'
System info: host: 'DESKTOP-4DSS7OC', ip: '192.168.2.21', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_161'
Driver info: driver.version: AndroidDriver
at io.appium.java_client.remote.AppiumCommandExecutor$1.createSession(AppiumCommandExecutor.java:195)
at io.appium.java_client.remote.AppiumCommandExecutor.createSession(AppiumCommandExecutor.java:209)
at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:231)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:543)
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:207)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:130)
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 io.appium.java_client.android.AndroidDriver.<init>(AndroidDriver.java:93)
at testcase.MilonowFirstTest.main(MilonowFirstTest.java:37)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at io.appium.java_client.remote.AppiumCommandExecutor$1.createSession(AppiumCommandExecutor.java:185)
... 13 more
Caused by: org.openqa.selenium.WebDriverException: Unable to parse remote response: The URL '/wb/hub/session' did not map to a valid resource
Build info: version: '3.12.0', revision: '7c6e0b3', time: '2018-05-08T15:15:03.216Z'
System info: host: 'DESKTOP-4DSS7OC', ip: '192.168.2.21', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_161'
Driver info: driver.version: AndroidDriver
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:111)
... 18 more
答案 0 :(得分:1)
关闭appium服务器,然后重新启动,这应该可以工作。 该问题的永久解决方案是:
如果愿意,可以将该配置另存为预设以供下次使用。 还可以在您的应用中包含追随欲望的功能
AppiumDriver<MobileElement> driver;
DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability("deviceName", "Android phone");
caps.setCapability("udid", "your device uuid");
caps.setCapability("platformName", "Android");
caps.setCapability("platformVersion", "your device version");
caps.setCapability("appPackage", "name of app package");
caps.setCapability("appActivity", "name of app activity");
driver=new AndroidDriver<MobileElement>(new URL(
"http://127.0.0.1:4723/wd/hub"), caps);
如何查找设备uuid?
它将显示笔记本电脑已连接设备的列表。在连接的设备列表下方,您可以找到您的设备uuid
如何找到appPackage和appActivity
答案 1 :(得分:0)
尝试输入所需的功能参数“ APP”,
cap.setCapability(MobileCapabilityType.APP, "path_to_your_app");
或者如果您已在设备上安装了应用程序,则从匹配的配对电容开始:
cap.setCapability("appActivity", "com.test.myapp.ui.activities.MainActivity");
cap.setCapability("appPackage", "com.test.myapp");
然后您可以通过以下方法检查您的活动和程序包名称:打开手机上的应用程序,然后进入控制台并运行它:
adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'
这将返回如下内容:
mCurrentFocus =窗口{5f6bfe8 u0 d0 abc.com.test.android/com.test.abc.ui.home.HomeActivity}
mFocusedApp = AppWindowToken {123d4faf token = Token {asd2342 ActivityRecord {323tgee3 u0 abc.com.test.android/com.test.abc.ui.home.HomeActivity t1732}}}
其中如下:
窗口{5f6bfe8 u0 d0 abc.com.test.android/com.test.abc.ui.home.HomeActivity}
活动:`
“ abc.com.test.android”
...是一个包
“ com.test.abc.ui.home.HomeActivity”
,但建议将所有参数混合到APP,APP_PACKAGE,APP_ACTIVITY
希望这会有所帮助,
答案 2 :(得分:0)
您正在呼叫
driver = new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4723/wb/hub"), cap);
正确的URL应该为 / wd / hub 。