线程“主要” org.openqa.selenium.WebDriverException中的异常

时间:2018-07-24 10:34:16

标签: java android selenium selenium-webdriver appium

我正在尝试使用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

3 个答案:

答案 0 :(得分: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设备

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

如何找到appPackage和appActivity

单击此处:How to find appPackage and 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