使用Appium Java在iOS真机启动应用遇SessionNotCreatedException求助
解决Appium + Selenium 4.25.0启动iOS真机时的SessionNotCreatedException问题
问题核心
报错提示Illegal key values seen in w3c capabilities: [automationName, bundleId, derivedDataPath, deviceName, platformVersion, udid, usePrebuiltWDA],原因是Selenium 4.25.0开始严格校验W3C规范外的Capabilities,所有Appium专属的配置项必须添加appium:前缀,否则会被判定为非法键。
解决方案
方法1:手动为Appium专属Capabilities添加appium:前缀
修改你的Capabilities配置代码,给所有非W3C标准的字段加上前缀:
import org.openqa.selenium.remote.DesiredCapabilities; import io.appium.java_client.ios.IOSDriver; import java.net.URL; public class LaunchIosApp { public static void main(String[] args) throws Exception { DesiredCapabilities caps = new DesiredCapabilities(); // W3C标准字段无需前缀 caps.setCapability("platformName", "IOS"); // Appium专属字段必须添加appium:前缀 caps.setCapability("appium:automationName", "XCUITest"); caps.setCapability("appium:bundleId", "com.patientsafesolutions.pa..."); caps.setCapability("appium:derivedDataPath", "/Users/deekshasharma/Deskto..."); caps.setCapability("appium:deviceName", "iPhone15"); caps.setCapability("appium:platformVersion", "17.5.1"); caps.setCapability("appium:udid", "00008120-00145D182E10A01E"); caps.setCapability("appium:usePrebuiltWDA", true); IOSDriver driver = new IOSDriver(new URL("http://localhost:4723/wd/hub"), caps); // 后续操作... driver.quit(); } }
方法2:使用AppiumOptions子类(推荐)
Appium提供了IOSOptions类(继承自AppiumOptions),会自动为专属配置项添加appium:前缀,无需手动处理:
import io.appium.java_client.ios.IOSDriver; import io.appium.java_client.ios.options.IOSOptions; import java.net.URL; public class LaunchIosApp { public static void main(String[] args) throws Exception { IOSOptions options = new IOSOptions(); options.setPlatformName("IOS"); options.setAutomationName("XCUITest"); options.setBundleId("com.patientsafesolutions.pa..."); options.setDerivedDataPath("/Users/deekshasharma/Deskto..."); options.setDeviceName("iPhone15"); options.setPlatformVersion("17.5.1"); options.setUdid("00008120-00145D182E10A01E"); options.setUsePrebuiltWDA(true); IOSDriver driver = new IOSDriver(new URL("http://localhost:4723/wd/hub"), options); // 后续操作... driver.quit(); } }
额外检查点
- 确保Appium Java Client版本与Selenium版本兼容:Appium Java Client 9.x+适配Selenium 4.x系列,若版本不匹配可能出现其他兼容性问题。
- 确认Appium服务已正常启动,且真机连接无误(udid正确、设备已信任Mac、WDA已正确部署)。
内容的提问来源于stack exchange,提问作者Deeksha Sharma
相关产品推荐
相关产品推荐

