WinAppDriver运行桌面自动化报FAILED CONFIGURATION连接拒绝错误
报错根因与修复方案
Connection refused: no further information 报错的核心是测试代码无法和本地4723端口的监听服务建立连接,和记事本程序本身、元素定位逻辑无关,常见触发原因及修复方式如下:
- 未启动WinAppDriver服务
WinAppDriver没有随测试代码自启动的能力,安装完成后必须手动进入默认安装路径C:\Program Files (x86)\Windows Application Driver\,双击运行WinAppDriver.exe,看到命令行窗口提示服务监听http://127.0.0.1:4723/后,再执行测试代码才能正常连接。 - 系统开发者模式未开启
WinAppDriver依赖Windows开发者模式权限运行,进入系统「设置-隐私和安全性-开发者选项」,开启「开发人员模式」开关,重启WinAppDriver后再试。 - 端口配置不匹配
如果启动WinAppDriver时通过命令行参数自定义了监听端口(比如WinAppDriver.exe 127.0.0.1:5000),代码里初始化WindowsDriver的连接地址必须同步修改为对应端口,否则会连接失败。 - 本地防火墙/安全软件拦截
检查Windows Defender防火墙或第三方安全软件的入站、出站规则,确认没有拦截WinAppDriver的本地端口监听行为,可临时关闭防火墙做连通性验证,确认是拦截问题后添加对应放行规则即可。
代码逻辑附带问题修复
你提供的测试代码还有几处会导致后续运行异常的问题,需要同步修改:
@AfterMethod注解的clenUp方法存在逻辑错误:方法内执行driver.quit()后多余调用了setUp(),会导致每个测试用例执行完后重复启动驱动实例,和@BeforeMethod的初始化逻辑冲突,直接删除这行setUp()调用即可;另外方法名存在拼写错误,正确拼写为cleanUp。- 能力参数键名不规范:官方要求的平台参数键为
platformName,你当前写的platform属于非标准键,部分版本的WinAppDriver会识别失败。 - 缺少空值判断:驱动初始化如果失败,后续调用
driver.manage()会直接抛出空指针异常,需要加非空判断。 - 测试用例元素定位错误:新版记事本的「App theme」控件不在主窗口顶层,直接调用
findElementByName("App theme")会报元素不存在错误,连通性验证阶段可以先测试主窗口编辑区的输入逻辑。
修正后的基础可用代码片段参考:
public class NotePadTest { public static WindowsDriver driver = null ; @BeforeMethod public void setUp() throws MalformedURLException { DesiredCapabilities cap = new DesiredCapabilities(); cap.setCapability("app","C:\\Windows\\System32\\notepad.exe"); cap.setCapability("platformName", "Windows"); cap.setCapability("deviceName", "WindowsPC"); driver = new WindowsDriver(new URL("http://127.0.0.1:4723"), cap); driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); } @AfterMethod public void cleanUp() { if (driver != null) { driver.quit(); } } @AfterSuite public void tearDown() { if (driver != null) { driver.quit(); } } @Test public void checkNotepadEditTest() { // 连通性验证用例:定位编辑区输入文本 driver.findElementByClassName("Edit").sendKeys("WinAppDriver connect success"); } }
内容的提问来源于stack exchange,提问作者yakov sachuk
相关产品推荐
相关产品推荐

