无法将命令代理到远程服务器:套接字挂起

2024-05-16 01:07:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在并行运行两台Android设备。有时,这种错误会显现出来

selenium.common.exceptions.WebDriverException:
Message: An unknown server-side error occurred while processing the command. 
Original error: Could not proxy command to the remote server. 
Original error: socket hang up

其他人建议更改systemPort。我做到了这一点,看到的进步非常有限

其他人也提出了有关我的能力语法的问题。我已经检查了三次,不认为有任何问题

desired_cap_1 ={
    "platformName": "Android",
    "deviceName": "Galaxy A60",
    "platformVersion": "11",
    "app": "appname",
    "appPackage": "apppackage",
    "appActivity": "appactivity",
    "fullReset": "False",
    "noReset": "True",
    "systemPort": 8202

}

desired_cap_2 ={
    "platformName": "Android",
    "deviceName": "Galaxy S7 Edge",
    "platformVersion": "8",
    "app": "appname",
    "appPackage": "apppackage",
    "appActivity": "appactivity",
    "fullReset": "False",
    "noReset": "True",
    "systemPort": 8203
}

其他人在并行测试期间提到了Appium中的“拆卸”,这是一个我不熟悉的概念,几乎没有相关文档

这可能是什么原因


Tags: theappservererrorgalaxycommandandroidcap
1条回答
网友
1楼 · 发布于 2024-05-16 01:07:31

我自己也经历过这种情况,并发现在测试之前、测试期间和测试之后,使用正确的方法启动和停止Appium服务器非常重要。您所需的功能似乎很好,这些功能不会影响Appium服务器的启动和停止方式,仅用于设备和应用程序等功能测试的详细信息。如果我查看自己的项目,我会执行以下操作来正确启动和停止Appium服务器:

  1. 检查服务器是否已在端口上运行(您可以看到,如果Appium服务器已在运行,我不会启动它-否则会导致一些问题)
    public boolean checkServerRunning(int port) {
        boolean isServerRunning = false;
        ServerSocket serverSocket;
        try {
            serverSocket = new ServerSocket(port);
            serverSocket.close();
        } catch (IOException e) {
            isServerRunning = true;
        }
        return isServerRunning;
    }

     if (!service.checkServerRunning(port)) {
         service.startServerCustom(url, port, null);
     }
  1. 我将AndroidDriver分配给Appium服务器的URL
driver = new AndroidDriver<>(new URL("http://" + url + ":" + port + "/wd/hub"), cap);

此时,我假设我的Appium服务器正在正确运行,我的AndroidDriver实例已耦合

  1. 执行测试中的所有事务

现在是最适合我的拆卸部分,因为使用这些步骤我没有遇到套接字挂起错误:

  1. 调用AndroidDriver执行退出命令-这必须在测试后始终执行,以便Appium服务器的内存中没有AndroidDriver的任何内容
driver.quit();
  1. 如果我已使用脚本启动服务器,请退出服务器(如果服务器未在脚本内部启动,则无法停止服务器,因为服务。实例的内存中没有Appium服务器
 if (serverFlag) service.stopServer();

最后但并非最不重要的一点并行运行要求同一台机器上的每个设备都有一个单独的Appium实例。如果您对每个实例仔细执行步骤-每个实例有不同的端口/AndroidDriver-服务器将正确处理此问题

相关问题 更多 >