当前位置: 首页 > 知识库问答 >
问题:

如何确保UIAutmator2的端口8200..8299在杀死Appium后是空闲的?

景河
2023-03-14

我正在Windows机器上24/7运行Appium,以执行自动化测试。我正在Android10的模拟器上通过AVD运行这些测试。对于我的测试,我给出了正确的功能和运行功能很好。但几个小时/几天后,我得到以下错误:

    } finally {
        driver.closeApp();
        service.stopServer();
        System.exit(0);
    }
  • Android调试桥版本1.0.40
  • Appium版本1.20.2
  • Android10

PS我知道adb命令adb-s$udid forward--remove-all,但这解决了真正的问题吗?我不想每次都执行Java进程

更新-修复2-3

    } finally {
        AndroidDriver.quit();
        AppiumDriverLocalService.stopServer();

共有1个答案

阴凯歌
2023-03-14

这个问题是你问题的一个很好的例子。正如您所看到的,Appium团队正在将其关闭为不是bug。

原因很明显:Appium不负责管理端口,它依赖于您的系统在required(由Appium代码)范围内有一些自由。

systemport用于连接到appium-uiautomator2-server,默认为8200。基本上,Appium为appium-uiautomator2-server从8200到8299选择一个端口。但是,当您并行运行测试时,必须调整端口以避免冲突。如果你不是,你应该是安全的在99%的情况下与默认。

重新启动系统(假设它将清除端口)并运行测试。检查Appium服务器日志中关闭会话时的任何错误。可能是问题与ADB设置或权限问题有关,并且UI2服务器未正确停止。

如果是,端口将继续使用。而且不适合处理清理问题。我不确定你提到的adb命令是一个很好的100%有保证的方法来做到这一点。我只需要添加一个shell脚本,它在Appium服务器开始清理8200-8299范围内的端口之前执行,并忘记这个问题。

 类似资料:
  • 我确实清理了模拟器并重新启动了。 除此之外,我没有发现任何端口从8200-8299已经在系统中使用。 我也添加了功能,但仍然看到相同的错误。 更新: 找到了一些更多的日志,并发现端口转发没有被UIAutomator2(或adb)清除,这就是为什么我在iOS上没有问题,但在Android上只有问题。下面是appium服务器端的日志: 其中上升到并删除100个活动会话,这是我所不期望的。 另外,在ne

  • 问题内容: 我想超时并杀死空闲的Redis客户端。有可以设置的设置吗?我似乎记得在某处设置配置,但似乎再也找不到了。 我希望这是自动完成的,而不是手动调用client kill命令。 问题答案: 查看Redis配置文件(用于启动Redis的文件)​​。 只需检查未注释掉的参数,然后更改超时参数以将非零值放入秒中即可。应该重新启动实例以考虑到此参数。 要在正在运行的Redis实例上更改此参数,可以使

  • 我使用java servlets和pgadmin9.1。问题是servlets中的连接没有正确关闭,所以如果它达到最大连接就会导致空白屏幕。我不希望每个用户都在pgadmin中扩展最大连接...我在servlet的开始和结束点使用了下面的查询,但它显示的错误是..由于管理员命令连接终止..

  • 比如说,KStream拓扑结构很简单:输入主题- 如果有一个应用程序实例使用

  • 使用8080/8005等命令删除在任何端口、Windows上运行的tomcat服务

  • 我试图使用tomcat目录中的关闭tomcat。但发现服务器没有正确关闭。因此无法重新启动 我的tomcat正在端口上运行。 我想杀死在上运行的tomcat进程。我首先想要拥有在特定端口(8080)上运行的进程列表,以便选择要杀死哪个进程。