Java+Appium+WinAppDriver启动记事本遇invalid argument错误求助
解决WinAppDriver启动记事本时的SessionNotCreatedException问题
核心问题定位
这个错误的本质是WinAppDriver启动会话时,没有正确配置必填的app或appTopLevelWindow参数,和IP地址无关,所以换IP无法解决。
分步解决方案
1. 修正DesiredCapabilities配置
确保代码里正确指定记事本的绝对路径,示例代码如下:
DesiredCapabilities capabilities = new DesiredCapabilities(); // 记事本的系统绝对路径,注意转义反斜杠 capabilities.setCapability("app", "C:\\Windows\\system32\\notepad.exe"); // 固定指定平台为Windows capabilities.setCapability("platformName", "Windows"); // 设备名称填任意合理值即可,比如WindowsPC capabilities.setCapability("deviceName", "WindowsPC"); // 连接WinAppDriver默认地址,端口4723 WindowsDriver<WindowsElement> driver = new WindowsDriver<>(new URL("http://127.0.0.1:4723"), capabilities);
- 如果你用的是64位系统,也可以用
C:\\Windows\\SysWOW64\\notepad.exe调用32位记事本; platformName和deviceName是WinAppDriver启动会话的必填参数,不能遗漏。
2. 确保WinAppDriver正确运行
- 必须以管理员身份启动WinAppDriver,否则可能没有权限访问系统自带应用;
- 检查WinAppDriver启动后的控制台输出,确认监听地址是
http://127.0.0.1:4723/,如果修改过端口,代码里的URL要同步调整。
3. 验证pom.xml依赖配置
确保依赖的版本兼容,示例配置如下:
<dependencies> <!-- Appium Java客户端 --> <dependency> <groupId>io.appium</groupId> <artifactId>java-client</artifactId> <version>8.5.1</version> </dependency> <!-- Selenium核心依赖(Appium依赖此包) --> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.11.0</version> </dependency> <!-- WinAppDriver专属驱动(可选,用于更细致的Windows元素操作) --> <dependency> <groupId>io.appium</groupId> <artifactId>windows-driver</artifactId> <version>4.11.0</version> </dependency> </dependencies>
- 注意:Appium Java Client和Selenium的版本要匹配,建议选用稳定的较新版本。
4. 其他排查点
- 如果记事本已经在运行,可以用
appTopLevelWindow参数指定窗口句柄:先通过Spy++工具获取记事本的窗口句柄字符串,然后配置capabilities.setCapability("appTopLevelWindow", "你的窗口句柄");; - 运行代码前关闭所有已打开的记事本进程,避免会话冲突。
验证步骤
- 以管理员身份启动WinAppDriver,控制台显示
Listening on http://127.0.0.1:4723/即为正常; - 运行修正后的代码,观察WinAppDriver控制台的会话创建日志,同时检查记事本是否正常启动。
内容的提问来源于stack exchange,提问作者Steam
相关产品推荐
相关产品推荐

