使用Appium Java打开安卓计算器时出现null输出及URL格式错误
Appium启动Android计算器报错MalformedURLException的解决方法
尝试用Appium在Android设备上打开计算器应用,编写了Java函数,但运行后输出null,同时抛出java.net.MalformedURLException,错误提示为no protocol: 127.0.0.1:4723/wd/hub。相关代码及错误栈信息如下:
public static void openCalculator() throws Exception{ DesiredCapabilities cap = new DesiredCapabilities(); cap.setCapability("deviceName","Redmi Note 7S"); cap.setCapability("udid", "39aded9"); cap.setCapability("platformname", "Android"); cap.setCapability("platformVersion", "10 QKQ1.190910.002"); cap.setCapability("appPackage", "com.miui.calculator12.3.16"); cap.setCapability("appActivity", "com.miui.calculator.cal.CalculatorActivity"); driver = new AndroidDriver(new URL("127.0.0.1:4723/wd/hub"), cap); System.out.println("Application Started...."); }
错误信息:
null no protocol: 127.0.0.1:4723/wd/hub java.net.MalformedURLException: no protocol: 127.0.0.1:4723/wd/hub at java.net.URL.<init>(Unknown Source) at java.net.URL.<init>(Unknown Source) at java.net.URL.<init>(Unknown Source) at appiumtests.calculatorTest.openCalculator(calculatorTest.java:46) at appiumtests.calculatorTest.main(calculatorTest.java:23)
核心问题与修复
错误直接原因是创建URL对象时未指定协议头(http://),Appium服务的请求必须带协议前缀。同时代码中还有两处参数错误需要修正:
- 添加URL协议头:将
127.0.0.1:4723/wd/hub改为http://127.0.0.1:4723/wd/hub - 修正包名格式:
appPackage参数不应带版本号,小米计算器正确包名为com.miui.calculator - 修正参数大小写:
platformname需改为platformName(Appium Capability参数区分大小写)
修正后的完整代码:
public static void openCalculator() throws Exception{ DesiredCapabilities cap = new DesiredCapabilities(); cap.setCapability("deviceName","Redmi Note 7S"); cap.setCapability("udid", "39aded9"); cap.setCapability("platformName", "Android"); cap.setCapability("platformVersion", "10 QKQ1.190910.002"); cap.setCapability("appPackage", "com.miui.calculator"); cap.setCapability("appActivity", "com.miui.calculator.cal.CalculatorActivity"); driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap); System.out.println("Application Started...."); }
额外验证步骤
- 确认Appium服务已在本地4723端口启动(可通过Appium Desktop或命令行
appium启动) - 执行
adb devices命令,确保设备39aded9已正常连接并开启USB调试 - 重新运行代码,检查计算器应用是否正常启动
内容的提问来源于stack exchange,提问作者Sachin Soni
相关产品推荐
相关产品推荐

