java.lang.IllegalArgumentException:w3c 功能中出现非法键值

问题描述 投票:0回答:1

我正在尝试在我的手机上准备测试自动化。
为此我做了必要的准备,例如:

  • Appium 服务器已安装并运行

  • 在cmd中通过adb devices验证UDID

设置功能后,我遇到无法连接手机的错误。

在 Eclipse 中我收到以下错误消息:

我用 XXX 替换了 UID(但对于 UID,我使用了“adb devices”给出的名称。
而且,我把Host信息和ip都替换成了YYY。

java.lang.IllegalArgumentException: Illegal key values seen in w3c capabilities: [addActivity, addPackage, deviceName, platformVersion, udid]
Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.
Host info: host: 'YYY', ip: 'YYY.YYY.YYY.YY'
Build info: version: '4.23.1', revision: '656257d8e9'
System info: os.name: 'Windows 11', os.arch: 'amd64', os.version: '10.0', java.version: '17.0.8'
Driver info: io.appium.java_client.AppiumDriver
Command: [null, newSession {capabilities=[Capabilities {addActivity: com.sec.android.app.popupca..., addPackage: com.sec.android.app.popupca..., deviceName: Galaxy A40, platformName: ANDROID, platformVersion: 11, udid: XXX}]}]
Capabilities {addActivity: com.sec.android.app.popupca..., addPackage: com.sec.android.app.popupca..., deviceName: Galaxy A40, platformName: ANDROID, platformVersion: 11, udid: XXX}
org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.

我执行了以下代码。

我的目标是使用该脚本打开手机上的计算器应用程序。

我没有收到上述行为,而是收到了上面显示的错误消息。

因此,我的问题是:

该问题的原因可能是什么?
可以在我的代码中检测到错误吗?
我是否需要考虑其他主题并仔细检查设置?

我感谢任何形式的帮助和想法。

提前非常感谢您。

import java.net.URL;

import org.openqa.selenium.remote.DesiredCapabilities;

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;


public class AppiumTest1 {

    static AppiumDriver driver;
    
    public static void main(String[] args) {
        
        try {
        firstProgram();
        }
        catch (Exception exp)
        {
            System.out.println(exp.getCause());
            System.out.println(exp.getMessage());
            exp.printStackTrace();
        }
        // TODO Auto-generated method stub
    }
        public static void firstProgram() throws Exception
        {
            DesiredCapabilities cap = new DesiredCapabilities();
            cap.setCapability("deviceName", "Galaxy A40");
            cap.setCapability("udid", "XXX");
            cap.setCapability("platformName", "Android");
            cap.setCapability("platformVersion", "11");
            
            cap.setCapability("addPackage", "com.sec.android.app.popupcalculator");
            cap.setCapability("addActivity", "com.sec.android.app.popupcalculator.Calculator");
            
            URL url = new URL("http://127.0.0.1:4723/wd/hub");

            driver = new AppiumDriver(url, cap);
            
            System.out.println("Test");
        }
}
appium appium-android appium-java
1个回答
0
投票

试试这个,

使用 Appium 1.x,服务器默认接受 http://localhost:4723/wd/hub 上的命令。 /wd/hub 基本路径是从 Selenium 1 迁移到 Selenium 2 时的遗留约定,不再相关。


所以使用,

URL url = new URL("http://127.0.0.1:4723/");

代替

URL url = new URL("http://127.0.0.1:4723/wd/hub");

如果您想保留旧的行为,您可以通过命令行参数设置基本路径,如下所示:

appium --base-path=/wd/hub

文档链接:Appium 2.x

© www.soinside.com 2019 - 2024. All rights reserved.