获取 Selenium Webdriver 异常:无法解析远程响应:参数不正确

Posted

技术标签:

【中文标题】获取 Selenium Webdriver 异常:无法解析远程响应:参数不正确【英文标题】:Getting Selenium Webdriver exception : Unable to parse remote response: Parameters were incorrect 【发布时间】:2018-05-26 22:35:50 【问题描述】:

我正在尝试使用 selenium webdriver 和 appium 在 macbook 上为 android 应用程序设置自动化。

这是我的代码:-

package com.tas.androidtest;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.MobileElement;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.remote.AndroidMobileCapabilityType;
import io.appium.java_client.remote.MobileCapabilityType;
import io.appium.java_client.remote.MobilePlatform;
import junit.framework.Assert;

public class MyFirstAppiumDroidTest 

public static void main(String[] args) throws MalformedURLException 
    File appDir= new File(System.getProperty("user.dir")+"/app");
       File app= new File(appDir, "selendroid-test-app-0.17.0.apk");

       //declaring Andriod platform properties
       DesiredCapabilities capa = new DesiredCapabilities();
       capa.setCapability("deviceName","Android");
       capa.setCapability("platformVersion", "6.0.1");
       capa.setCapability("platformName",MobilePlatform.ANDROID);
       capa.setCapability("app", app.getAbsolutePath());
       capa.setCapability("appPackage", "io.selendriod.testapp");
       capa.setCapability("appActivity","io.selendriod.testapp.HomeScreenActivity");

       //instantiating Andriod driver  
    AndroidDriver driver= new AndroidDriver(new URL("http://0.0.0.0:4723/wd/hub"),capa);
       driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
       driver.findElementById("io.selendroid.testapp:id/startUserRegistration").clear();
       driver.findElementById("io.selendroid.testapp:id/inputUsername").sendKeys("test");
       driver.findElement(By.id("io.selendroid.testapp:id/inputEmail")).sendKeys("test@mail.com");
       driver.findElement(By.id("io.selendroid.testapp:id/inputPassword")).sendKeys("12345");
       driver.hideKeyboard();
       driver.findElement(By.id("io.selendroid.testapp:id/input_adds")).click();
       driver.findElement(By.id("io.selendroid.testapp:id/btnRegisterUser")).click();
       Assert.assertEquals("napendra", driver.findElement(By.id("io.selendroid.testapp:id/label_username_data")).getText());
       driver.quit();
       System.out.print("Completed !!!");




我已启动 appium 服务器并使用 maven 运行测试,但每次运行测试时都会出错。 这是错误:-

线程“主”org.openqa.selenium.WebDriverException 中的异常: 无法解析远程响应:参数不正确。我们要 "required":["desiredCapabilities"],"optional":["requiredCapabilities","sessionId","id"] 并且您发送了 ["desiredCapabilities","capabilities"] 构建信息: 版本:'3.7.1',修订:'8a0099a',时间: '2017-11-06T21:01:39.354Z' 系统信息:主机: '用户-MacBook-Air.local', ip: '192.xxx.xxx.xxx', os.name: 'Mac OS X', os.arch:'x86_64',os.version:'10.11.6',java.version:'1.8.0_91' 驱动程序信息:driver.version:AndroidDriver at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:111) 在 org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:73) 在 org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:142) 在 io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:69) 在 org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:600) 在 io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:40) 在 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(RemoteWebDriver.java:219) 在 org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:142) 在 io.appium.java_client.DefaultGenericMobileDriver.(DefaultGenericMobileDriver.java:36) 在 io.appium.java_client.AppiumDriver.(AppiumDriver.java:114) 在 io.appium.java_client.AppiumDriver.(AppiumDriver.java:132) 在 io.appium.java_client.android.AndroidDriver.(AndroidDriver.java:92) 在 com.tas.androidtest.MyFirstAppiumDroidTest.main(MyFirstAppiumDroidTest.java:52)

【问题讨论】:

你能发布appium服务器日志吗? appium 服务器日志看起来不错,但是请在此处找到日志 [HTTP] --> GET /wd/hub/status [MJSONWP] 使用 args 调用 AppiumDriver.getStatus():[ ] [MJSONWP] 使用 driver.getStatus() 结果响应客户端:"build":"version":"1.5.3"... [HTTP] GET /wd/hub/status [MJSONWP] 使用 args 调用 AppiumDriver.getStatus():[] [MJSONWP] 使用 driver.getStatus() 结果响应客户端:"build": “版本”:“1.5.3”... [HTTP] 【参考方案1】:

可能您在测试中使用了更高版本的 java-client,它与 1.5.3 服务器版本不兼容。

我在其他一些报告中看到了这个错误,Appium 服务器更新解决了它:1.7.1 现在是最新的稳定版。

【讨论】:

以上是关于获取 Selenium Webdriver 异常:无法解析远程响应:参数不正确的主要内容,如果未能解决你的问题,请参考以下文章

Selenium Webdriver:元素不可见异常

Python Selenium:处理 Webdriver 异常

python + selenium webdriver 自动化测试 之 环境异常处理 (持续更新)

警报处理 - Selenium WebDriver/Selenium RC 2.18.0 - 异常

线程“主”java.lang.NoClassDefFoundError 中的异常:org/openqa/selenium/WebDriver

Selenium WebDriver 在线程“main”org.openqa.selenium.ElementNotInteractableException 中抛出异常