本地使用Xamarin.UITest遇连接拒绝请求异常问题求助
我之前在类似环境下碰到过一模一样的问题,结合你的配置信息,给你几个一步步排查的方案,应该能解决这个连接被拒绝的问题:
检查模拟器网络与端口占用
连接被拒绝大概率是DeviceAgent和UITest之间的通信出了问题。先确认iOS模拟器能正常联网(比如打开Safari访问网页试试),然后排查端口是否被占用:
打开终端执行命令:lsof -i :8000如果有进程占用8000端口,杀掉对应的进程,或者直接重启模拟器(有时候模拟器的网络栈会莫名其妙出问题)。另外,iOS10.3模拟器在Xcode9.3下偶尔有兼容性小bug,重启Xcode和模拟器往往能解决不少问题。
确认TestCloud.Agent的正确配置
一定要确保你的App在Debug模式下正确初始化了Agent:
在AppDelegate的FinishedLaunching方法中添加(记得包条件编译,避免Release版本包含Agent代码):#if DEBUG Xamarin.Calabash.Start(); #endif同时,运行测试时必须部署Debug版本的App到模拟器,Release版本会自动移除Agent相关代码,导致连接失败。
修正UITest的初始化代码
初始化iOSApp时,尽量明确指定模拟器的UDID,避免自动识别出错:var app = ConfigureApp .iOS .Debug() .DeviceIdentifier("你的iPhone X模拟器UDID") .InstallApp("/path/to/your/debug/app.ipa") .StartApp();另外,尝试开启本地服务器支持,有时候能解决连接问题:
var app = ConfigureApp .iOS .Debug() .LocalServerEnabled() .StartApp();排查版本兼容性
你的Xamarin.Ui.Test 2.2.4和Xamarin.Testcloud.Agent 0.21.4版本是否匹配?虽然2.2.x和0.21.x理论上兼容,但偶尔版本不匹配会导致DeviceAgent启动失败。可以尝试把UITest升级到和Agent对应的兼容版本(比如2.2.5,注意不要升级到太新的版本,避免和Xcode9.3不兼容)。重置模拟器与清理缓存
模拟器的缓存数据可能导致Agent启动异常:- 打开模拟器,点击菜单
Hardware > Erase All Content and Settings重置模拟器 - 清理Xcode的DerivedData:前往
~/Library/Developer/Xcode/DerivedData,删除对应项目的文件夹 - 重启VS和Xcode,重新编译并部署App到模拟器,再运行测试
- 打开模拟器,点击菜单
检查防火墙与代理设置
如果本地开启了防火墙或者代理,可能会阻断UITest和DeviceAgent之间的本地通信。暂时关闭防火墙,或者将VS和Xcode加入防火墙信任列表;如果使用了代理,尝试关闭代理后再运行测试。
内容的提问来源于stack exchange,提问作者hot33331

