【问题标题】:Exception in thread "main" org.openqa.selenium.WebDriverException线程“主”org.openqa.selenium.WebDriverException 中的异常
【发布时间】:2018-12-31 22:43:06
【问题描述】:

我正在尝试使用抛出此错误的 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

【问题讨论】:

  • 你把你的“APP”参数放在哪里了,你在测试哪个应用,先试试把cap.setCapability(MobileCapabilityType.APP, "path_to_your_app");

标签: java android selenium selenium-webdriver appium


【解决方案1】:

关闭 appium 服务器并重新启动它,这应该可以工作。 这个问题的永久解决方案是:

  • 启动 Appium 应用
  • 进入高级设置
  • 输入您想要的服务器地址和服务器端口。我使用 127.0.0.1 作为服务器地址,使用 4723 作为服务器端口
  • 选择或检查会话覆盖

如果您愿意,可以将此配置保存为预设以供下次使用。 还要在您的应用中包含以下所需功能

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?

  • 在您的 Android 设备中启用 USB 调试模式并连接到您的笔记本电脑
  • 打开命令提示符并输入 adb devices

它将显示连接到您的笔记本电脑的设备列表。在连接的设备列表下方,您可以找到您的设备 uuid

如何找到 appPackage 和 appActivity

点击这里:How to find appPackage and appActivity?

【讨论】:

  • 我赞成您的回答,因为虽然它不一定能解决报告的问题(我也有),但有关查找包和活动的两种方法的页面链接很有帮助。
【解决方案2】:

尝试输入所需的功能参数“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 活动记录{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中

希望这会有所帮助,

【讨论】:

  • 我无法获取APP_PACKAGE' in MobileCapabilityType.APP_PACKAGE`
  • 对不起,我是从脑海中输入的,但请尝试这样 cap.setCapability("appActivity", "com.test.myapp.ui.activities.MainActivity"); cap.setCapability("appPackage", "com.test.myapp"); ,更新了我的答案
  • 您的回答部分似乎很好。但是,我的假设是它没有连接到 appium 服务器。所以它无法创建连接?
  • 您是否尝试过上述解决方案?在我看来,他找不到应用程序来挂上钩子,所以这是抛出异常的方式。
  • 我尝试了您的解决方案,问题仍未解决。并且在 appium 服务器端错误消息 "[HTTP] --> POST /wb/hub/session" ,[HTTP] 找不到路由。将内容类型设置为 'text/plain' 和 [HTTP]
【解决方案3】:

你在打电话

       driver = new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4723/wb/hub"), cap);

正确的 URL 应该是 /wd/hub

【讨论】:

  • 不错,但我怀疑这是解决方案。
猜你喜欢
  • 2014-10-25
  • 1970-01-01
  • 2017-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-27
  • 2021-11-29
  • 1970-01-01
相关资源
最近更新 更多