【问题标题】:Getting [debug] [MJSONWP] Bad parameters: BadParametersError on updating selenium version获取 [调试] [MJSONWP] 错误参数:更新 selenium 版本时出现 BadParametersError
【发布时间】:2018-02-28 09:53:42
【问题描述】:

在将 selenium 升级到 3.9.1 之前,自动化套装运行良好。更新 selenium 后,我在初始化 Android 驱动程序时收到以下错误。

[HTTP] --> POST /wd/hub/session {"desiredCapabilities":{"app":"/Users/abhinav.tiwari/Documents/Office Stuff/Automation/ui-automation-testing/TestData/mobile/testAutomation.apk","deviceName":"emulator-5554","fullReset":"false","noReset":"true","platformName":"Android","platformVersion":"6.0"},"capabilities":{"desiredCapabilities":{"app":"/Users/abhinav.tiwari/Documents/Office Stuff/Automation/ui-automation-testing/TestData/mobile/testAutomation.apk","deviceName":"emulator-5554","fullReset":"false","noReset":"true","platformName":"Android","platformVersion":"6.0"},"firstMatch":[{"platformName":"android"}]}}
[debug] [MJSONWP] Bad parameters: BadParametersError: Parameters were incorrect. We wanted {"required":["desiredCapabilities"],"optional":["requiredCapabilities","sessionId","id"]} and you sent ["desiredCapabilities","capabilities"]
[HTTP] <-- POST /wd/hub/session 400 5 ms - 178 
exception is .......org.openqa.selenium.WebDriverException: Unable to parse remote response: Parameters were incorrect. We wanted {"required":["desiredCapabilities"],"optional":["requiredCapabilities","sessionId","id"]} and you sent ["desiredCapabilities","capabilities"]
Build info: version: '3.9.1', revision: '63f7b50', time: '2018-02-07T22:25:02.294Z'

我正在使用 5.0.4 版本的 java 客户端和 1.7.2 版本的 appium。 我在互联网上做了很多研究,但没有找到任何解决方案。

下面是我的代码:

final File apkPath= new File(System.getProperty("user.dir")+File.separator+"TestData"+File.separator+"mobile"+File.separator+"testAutomation.apk");
//Adding DesiredCapabilities
DesiredCapabilities androidCapability = new DesiredCapabilities();
androidCapability.setCapability("platform", testConfig.getRunTimeProperty("platform"));
androidCapability.setCapability("platformVersion", testConfig.getRunTimeProperty("platformVersion"));
androidCapability.setCapability("deviceName", testConfig.getRunTimeProperty("deviceName"));
androidCapability.setCapability("app",apkPath.getAbsolutePath());
androidCapability.setCapability("appPackage", testConfig.getRunTimeProperty("appPackageName"));
androidCapability.setCapability("appActivity",testConfig.getRunTimeProperty("appActivity"));
try
{
    AppiumDriver<WebElement> driver = new AndroidDriver<>(new URL("http://"+testConfig.getRunTimeProperty("serverIP")+":"+testConfig.getRunTimeProperty("serverPort")+"/wd/hub"),androidCapability);

}
catch(Exception e)

【问题讨论】:

  • 请您的代码试用。

标签: java selenium selenium-webdriver appium


【解决方案1】:

在您的问题中,您没有提到您从哪个版本的 Selenium Client 升级到 Selenium v​​3.9.1

在最近的版本中,Selenium 有了很大的发展。几点:

  • Selenium v3.7.0

    Migrated from using `DesiredCapabilities` to either `MutableCapabilities` or (preferably) `ImmutableCapabilities`.
    

您使用setCapability()DesiredCapabilities 类的方法继承自MutableCapabilities 类。 setCapability()的当前实现定义如下:

  • setCapability()

    public void setCapability(java.lang.String capabilityName, boolean value)
    
  • setCapability()

    public void setCapability(java.lang.String capabilityName, java.lang.String value)
    
  • setCapability()

    public void setCapability(java.lang.String capabilityName, Platform value)
    
  • setCapability()

    public void setCapability(java.lang.String key, java.lang.Object value)
    

在执行时,您的程序只需要 "required":["desiredCapabilities"],因为您已通过 ["desiredCapabilities","capabilities"]。因此你的程序出错了。

解决方案

解决此问题的方法是仅发送受支持的"required":["desiredCapabilities"]。您也可以使用 MutableCapabilities 类中的 merge(Capabilities extraCapabilities) 函数并将参数作为 Options

传递

【讨论】:

  • 以前的 selenium 版本是 3.0.1,现在是 3.9.1,我尝试使用 Mutable Capabilities 类,但它仍然抛出相同的错误。请帮助我如何只发送支持的“必需”:[“desiredCapabilities”]。
猜你喜欢
  • 1970-01-01
  • 2022-10-08
  • 2020-08-10
  • 1970-01-01
  • 1970-01-01
  • 2019-07-18
  • 1970-01-01
  • 1970-01-01
  • 2022-11-18
相关资源
最近更新 更多