Appium初始化AndroidDriver遭遇SessionNotCreatedException(404错误)求助
兄弟,太懂你这种反复排查还卡404的崩溃感了!结合你用的Appium 2.4.1版本,我大概率能定位到问题点,给你几个针对性的排查步骤,按顺序试试:
核心坑点:Appium 2.x的端点路径变了!
你代码里用的http://127.0.0.1:4723/wd/hub是Appium 1.x的旧端点,Appium 2.x默认已经改成了根路径/,也就是你应该把URL改成http://127.0.0.1:4723/(注意去掉末尾的/wd/hub)。这是很多人从1.x升级到2.x最容易踩的低级错误!确认UiAutomator2驱动是否正常激活
你说安装了appium-uiautomator2-driver@2.45.1,但得确认驱动是否真的被服务器识别。打开终端执行appium driver list,看看uiautomator2驱动后面是不是标了active。如果没激活,执行appium driver activate uiautomator2;要是还是有问题,干脆卸载重装一遍:appium driver uninstall uiautomator2 appium driver install uiautomator2@2.45.1用命令行启动服务器看日志
别用Appium Desktop启动,改用命令行appium -p 4723启动,盯着控制台输出看有没有异常——比如驱动加载失败、端口被占用的提示。如果端口被占,换个端口比如4724,代码里的URL也跟着同步修改。替换过时的DesiredCapabilities为AndroidDriverOptions
Appium 2.x已经逐步废弃了DesiredCapabilities,推荐用更规范的Options类,兼容性更好。把你的初始化代码改成这样试试:public AppiumDriver initializeAndroidDriver() throws MalformedURLException { AndroidDriverOptions options = new AndroidDriverOptions(); options.setPlatformName("Android"); options.setAutomationName("UiAutomator2"); options.setPlatformVersion("12.0"); options.setDeviceName("e590b90f"); driver = new AndroidDriver(new URL("http://127.0.0.1:4723/"), options); return driver; }验证网络端点是否可达
用Postman或者curl发一个POST请求到http://127.0.0.1:4723/session,请求体用JSON格式带上你的配置:{ "capabilities": { "platformName": "Android", "automationName": "UiAutomator2", "platformVersion": "12.0", "deviceName": "e590b90f" } }如果这个请求返回正常,说明服务器没问题,问题出在代码细节;如果还是404,那就是服务器端的配置问题,重点查驱动和启动命令。
对了,你提到的http://192.168..:4723这个URL有两个点,应该是输入错误,实际用的时候要改成正确的局域网IP哦!
备注:内容来源于stack exchange,提问作者Azmal Hossain

