我正在尝试在我的手机上准备测试自动化。
为此我做了必要的准备,例如:
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 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