【问题标题】:WebDriverException: It is impossible to create a new session because 'createSession' which takes HttpClient, InputStream and long was not foundWebDriverException:无法创建新会话,因为未找到需要 HttpClient、InputStream 和 long 的“createSession”
【发布时间】:2019-04-22 21:08:36
【问题描述】:

我正在使用下面的代码来启动 android 驱动程序。但是在启动驱动程序时出现错误。 上线:

driver = new AndroidDriver<WebElement>(new URL(appiumServiceUrl), capabilities);

完整代码:

public class Test {

protected static AppiumDriver<WebElement> driver;
private AppiumDriverLocalService appiumService;
private String appiumServiceUrl;
Properties prop = new Properties();

@org.testng.annotations.Test
public void testappiumdriver() throws FileNotFoundException, IOException
{
    appiumService = AppiumDriverLocalService.buildDefaultService();
    appiumService.start();
    appiumServiceUrl = appiumService.getUrl().toString();
    prop.load(new FileInputStream("device_capabilities.properties"));
    Map<String, String> prop_map = new HashMap<String, String>();
    for (String key : prop.stringPropertyNames()) {
        prop_map.put(key, prop.getProperty(key));
    }           
    DesiredCapabilities capabilities = new DesiredCapabilities(prop_map);
    driver = new AndroidDriver<WebElement>(new URL(appiumServiceUrl), capabilities);
}

}

错误:

失败:testappiumdriver org.openqa.selenium.WebDriverException:无法创建新会话,因为“createSession”需要 HttpClient, 未找到 InputStream 和 long 或无法访问 构建信息:版本:'3.13.0',修订:'2f0d292',时间:'2018-06-25T15:24:21.231Z' 系统信息:主机:'PSL-GGN-597',ip:'192.168.2.137',os.name:'Windows 10',os.arch:'amd64',os.version:'10.0',java.version: '1.8.0_91' 驱动信息:driver.version:AndroidDriver 在 io.appium.java_client.remote.AppiumCommandExecutor$1.createSession(AppiumCommandExecutor.java:195) 在 io.appium.java_client.remote.AppiumCommandExecutor.createSession(AppiumCommandExecutor.java:209) 在 io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:231) 在 org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:548) 在 io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:42) 在 io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1) 在 io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1) 在 org.openqa.selenium.remote.RemoteWebDriver.startSession 在 org.openqa.selenium.remote.RemoteWebDriver。 (RemoteWebDriver.java:130) 在 io.appium.java_client.DefaultGenericMobileDriver。 (DefaultGenericMobileDriver.java:38) 在 io.appium.java_client.AppiumDriver.(AppiumDriver.java:84) 在 io.appium.java_client.AppiumDriver.(AppiumDriver.java:94) 在 io.appium.java_client.android.AndroidDriver.(AndroidDriver.java:93) 在 test.Test.testappiumdriver(Test.java:37)

我在我的项目中使用以下 jars:

硒-java 3.13 硒服务器 3.13 java客户端6.1.0

我也尝试过使用不同版本的 selenium 和 java-client,但再次遇到相同的错误。

【问题讨论】:

  • 请在错误发生前发布几行日志。

标签: java android selenium selenium-webdriver appium


【解决方案1】:

****解决方案一****

 DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability("deviceName", "xyz");
    capabilities.setCapability("platformVersion", "6.0");
    capabilities.setCapability("platformName", Platform.ANDROID);
    capabilities.setCapability("appPackage", "com.hp.HPSupportAssistant");
    capabilities.setCapability("appActivity", "com.hp.HPSupportAssistant.MainActivity");
     capabilities.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT, 6000);    capabilities.setCapability(AndroidMobileCapabilityType.AUTO_GRANT_PERMISSIONS,true);
    //desiredCap.setCapability(MobileCapabilityType.AUTOMATION_NAME, AutomationName.ANDROID_UIAUTOMATOR2);

这里在下面的行注释,然后运行它会起作用

desiredCap.setCapability(MobileCapabilityType.AUTOMATION_NAME,AutomationName.ANDROID_UIAUTOMATOR2);

第二个解决方案 或者保持在所需能力的线上,但在此之前做 在 cmd promt 上运行 3 cmd

adb shell pm list packages -f > D://t.txt
adb uninstall io.appium.uiautomator2.server
adb uninstall io.appium.uiautomator2.server.test

desiredCap.setCapability(MobileCapabilityType.AUTOMATION_NAME,AutomationName.ANDROID_UIAUTOMATOR2);

【讨论】:

  • 解决方案 1 已为我试用和测试。有用。当我们在配置所需功能时没有定义 App 包和 App Activity 时,就会出现此问题。
【解决方案2】:

此错误消息...

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.13.0', revision: '2f0d292', time: '2018-06-25T15:24:21.231Z' 
 System info: host: 'PSL-GGN-597', ip: '192.168.2.137', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_91' 
 Driver info: driver.version: AndroidDriver

...暗示 AndroidDriver 无法启动/生成新会话。

您的主要问题是您使用的二进制文件版本之间的不兼容性,如下所示:

  • 您的 JDK 版本1.8.0_91,相当古老

解决方案

  • JDK 升级到最新级别 JDK 8u191
  • 进行系统重启
  • 执行您的@Test

【讨论】:

    猜你喜欢
    • 2019-03-08
    • 2018-11-20
    • 2020-05-15
    • 2019-06-08
    • 2020-01-23
    • 2018-03-05
    • 2019-06-26
    • 2019-10-12
    • 2019-10-13
    相关资源
    最近更新 更多