将 Appium 更新到较新版本 Appium 1.22.3 后,我在尝试以编程方式启动 Appium 时收到状态 404 错误。
它曾经在旧版本中工作正常,但现在我有点不确定为什么会收到此错误。
public void globalSetup(ITestContext context) throws Exception {
// Load Props
loadProperties("appiumTests.properties");
// Load Secrets, Create the file
loadSecrets(System.getProperty("user.home") + "/automationSecrets.properties");
// Get Suite name
prop.setProperty("SuiteName", context.getName());
if (getRestartDeviceProperty().equals("true")) {
DeviceInteractions.rebootDevice(getPlatformData(), getDeviceUdidData(getDeviceNameData()));
}
logger.info("Building Appium Server...");
AppiumServiceBuilder builder = new AppiumServiceBuilder()
.withAppiumJS(new File("/usr/local/lib/node_modules/appium/build/lib/main.js"))
.withArgument(GeneralServerFlag.LOG_LEVEL, "info").withArgument(GeneralServerFlag.RELAXED_SECURITY)
.withLogFile(new File(System.getProperty("user.dir") + "/logs/appium.log")).usingAnyFreePort();
service = builder.build();
logger.info("The url is" +service);
logger.info("Appium server is built.");
logger.info("Starting appium server...");
service.start();
logger.info("Appium server started.");
cleanFileContent("report.txt");
// Clean TestID file
prop.setProperty(testRailRunIDProp, "");
}
public URL getServiceUrl() {
return service.getUrl();
}
在设置中我这样称呼司机。
driver = new AndroidDriver(getServiceUrl(), capabilities);
我遇到的错误
[调试] 2024-05-21 18:07:31.339 [org.testng.log4testng.Logger.debug(Logger.java:82)] - suiteXmlPath:“/Users/subh/Library/Caches/JetBrains/IdeaIC2024.1 /temp-testng-customsuite.xml" [信息] 2024-05-21 18:07:32.075 [org.testng.log4testng.Logger.info(Logger.java:112)] - [TestNG] 运行: /Users/subh/Library/Caches/JetBrains/IdeaIC2024.1/temp-testng-customsuite.xml
[ INFO ] 2024-05-21 18:07:32.144 [TestHelpers.PropertiesHelper.getRestartDeviceProperty(PropertiesHelper.java:207)] - 从“appiumTests.properties”文件加载“RestartDevice”属性 [信息] 2024-05-21 18:07:32.144 [TestFixtures.BaseTestFixture.globalSetup(BaseTestFixture.java:93)] - 构建 Appium 服务器... [信息] 2024-05-21 18:07:32.245 [TestFixtures.BaseTestFixture.globalSetup(BaseTestFixture.java:100)] - url isio.appium.java_client.service.local.AppiumDriverLocalService@45c80312 [ INFO ] 2024-05-21 18:07:32.245 [TestFixtures.BaseTestFixture.globalSetup(BaseTestFixture.java:101)] - Appium 服务器已构建。 [信息] 2024-05-21 18:07:32.245 [TestFixtures.BaseTestFixture.globalSetup(BaseTestFixture.java:102)] - 启动appium服务器... [Appium] 欢迎使用Appium v1.22.3 [Appium] 非默认服务器参数: [Appium]端口:16292 [Appium] 日志文件:/Users/subh/IdeaProjects/tile_mobile_automation/logs/appium.log [Appium] 日志级别:信息 [Appium]relaxedSecurityEnabled:true [Appium] Appium REST http 接口侦听器于 0.0.0.0:16292 启动 [HTTP] --> 获取/状态 [HTTP] {} [HTTP] <-- GET /status 404 13 ms - 211 [HTTP] [HTTP] --> 获取/状态 [HTTP] {} [HTTP] <-- GET /status 404 9 ms - 211 [HTTP]
该问题可能是由于 Appium 版本之间 Appium 默认服务器路径的更改引起的。
在 Appium 1.22.3 中,状态端点的路径已从 /wd/status 更改为 /`。
修复方法如下:
更新URL构造:
不要使用 getServiceUrl(),而是使用 new URL(getServiceUrl(), "/wd/hub")。这会添加必要的路径段。 说明:
getServiceUrl() 从 Appium 检索基本 URL。 附加 /wd/hub 指定 Appium 1.22.3 中状态检查的正确端点。