Appium代码启动服务遇SessionNotCreatedException(404)求助
问题描述
通过代码启动Appium服务后,抛出org.openqa.selenium.SessionNotCreatedException异常,无法创建新会话,响应码404,提示请求资源未找到或HTTP方法不被支持。使用Android模拟器运行应用,相关信息如下:
报错详情
org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Response code 404. Message: The requested resource could not be found, or a request was received using an HTTP method that is not supported by the mapped resource Host info: host: 'DESKTOP-SUFA48T', ip: '192.168.0.177' Build info: version: '4.6.0', revision: '79f1c02ae20' System info: os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '17.0.8.1' Driver info: io.appium.java_client.android.AndroidDriver Command: [null, newSession {capabilities=[{appium:app=C:\Users\HP\Mobile Testing\MobileTestingAppium\src\test\java\resources\ApiDemos-debug.apk, appium:automationName=UiAutomator2, appium:deviceName=Pixel 2 API 28, platformName=ANDROID}], desiredCapabilities=Capabilities {app: C:\Users\HP\Mobile Testing\..., automationName: UiAutomator2, deviceName: Pixel 2 API 28, platformName: ANDROID}}] Capabilities {}
Android模拟器

代码实现
@Test public void config() throws MalformedURLException { AppiumDriverLocalService service = new AppiumServiceBuilder() .withAppiumJS( new File("C:\\Users\\HP\\AppData\\Roaming\\npm\\node_modules\\appium\\build\\lib\\main.js")) .withIPAddress("127.0.0.1").usingPort(4723).withTimeout(Duration.ofSeconds(300)).build(); service.start(); // Construct the complete URL with the custom base path URL link = new URL("http://127.0.0.1:4723/wd/hub"); DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Pixel 2 API 28"); capabilities.setCapability(MobileCapabilityType.APP, "C:\\Users\\HP\\Mobile Testing\\MobileTestingAppium\\src\\test\\java\\resources\\ApiDemos-debug.apk"); capabilities.setCapability("automationName", "UiAutomator2"); // for Android AndroidDriver driver = new AndroidDriver(link, capabilities); driver.quit(); }
解决方案
- 修正Appium连接URL:Appium 2.x版本已移除默认的
/wd/hub路径,手动拼接的URL会导致404错误。建议直接通过service.getUrl()获取服务启动后的有效URL,避免路径错误:// 替换手动拼接的URL,使用服务提供的正确地址 URL link = service.getUrl(); - 检查AppiumJS路径正确性:Appium 2.x的
main.js路径通常为C:\\Users\\HP\\AppData\\Roaming\\npm\\node_modules\\appium\\lib\\main.js(无build目录),如果路径错误会导致服务启动异常,进而引发404。 - 版本兼容性验证:确保Appium Java Client版本与Appium服务版本匹配,推荐使用8.x及以上版本的Java Client适配Appium 2.x。
内容的提问来源于stack exchange,提问作者SHUBHAM SHEDGE
相关产品推荐
相关产品推荐

