无法将命令代理到远程服务器:套接字挂起
Could not proxy command to the remote server: Socket hang up
我是 运行 两个并联的 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
其他人建议更改系统端口。我已经这样做了,但看到的改进非常有限。
其他人也提出了我的功能语法问题。我已经对它们进行了三重检查,认为没有任何问题。
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 中的“拆解”,这是一个我不熟悉的概念,也找不到关于它的文档。
这可能是什么原因造成的?
我亲身体验过,发现在测试前、测试中和测试后,使用正确的方法启动和停止Appium服务器都很重要。您的 Desired Capabilities 似乎很好,这些不会影响 Appium 服务器的启动和停止方式,只会影响您的功能测试的详细信息,如设备和应用程序。如果查看我自己的项目,我有以下执行来正确启动和停止 Appium 服务器:
- 检查服务器是否已经 运行 在端口上(你看到如果它已经 运行 我没有启动 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);
}
- 我把AndroidDriver分配给Appium服务器的URL
driver = new AndroidDriver<>(new URL("http://" + url + ":" + port + "/wd/hub"), cap);
此时,我假设我的 Appium 服务器 运行 正确并且我的 AndroidDriver 实例已耦合
- 在我的测试中执行所有交易。
现在是最适合我的拆解部分,因为使用这些步骤我没有遇到 socket hang up 错误:
- 调用 AndroidDriver 执行 quit 命令 - 这必须在我测试后始终执行,这样我的 AndroidDriver 就不会在 Appium 服务器的内存中了
driver.quit();
- 如果我用脚本启动了服务器,请退出服务器(如果服务器未在脚本本身内启动,则无法停止服务器,因为 service. 实例没有Appium Server 在它的内存中。
if (serverFlag) service.stopServer();
最后但并非最不重要的一点 并行运行 要求同一台机器上的每个设备都有一个单独的 Appium 实例。如果您对每个实例仔细执行这些步骤 - 每个实例不同 port/AndroidDriver - 服务器将正确处理此问题。
我是 运行 两个并联的 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
其他人建议更改系统端口。我已经这样做了,但看到的改进非常有限。
其他人也提出了我的功能语法问题。我已经对它们进行了三重检查,认为没有任何问题。
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 中的“拆解”,这是一个我不熟悉的概念,也找不到关于它的文档。
这可能是什么原因造成的?
我亲身体验过,发现在测试前、测试中和测试后,使用正确的方法启动和停止Appium服务器都很重要。您的 Desired Capabilities 似乎很好,这些不会影响 Appium 服务器的启动和停止方式,只会影响您的功能测试的详细信息,如设备和应用程序。如果查看我自己的项目,我有以下执行来正确启动和停止 Appium 服务器:
- 检查服务器是否已经 运行 在端口上(你看到如果它已经 运行 我没有启动 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);
}
- 我把AndroidDriver分配给Appium服务器的URL
driver = new AndroidDriver<>(new URL("http://" + url + ":" + port + "/wd/hub"), cap);
此时,我假设我的 Appium 服务器 运行 正确并且我的 AndroidDriver 实例已耦合
- 在我的测试中执行所有交易。
现在是最适合我的拆解部分,因为使用这些步骤我没有遇到 socket hang up 错误:
- 调用 AndroidDriver 执行 quit 命令 - 这必须在我测试后始终执行,这样我的 AndroidDriver 就不会在 Appium 服务器的内存中了
driver.quit();
- 如果我用脚本启动了服务器,请退出服务器(如果服务器未在脚本本身内启动,则无法停止服务器,因为 service. 实例没有Appium Server 在它的内存中。
if (serverFlag) service.stopServer();
最后但并非最不重要的一点 并行运行 要求同一台机器上的每个设备都有一个单独的 Appium 实例。如果您对每个实例仔细执行这些步骤 - 每个实例不同 port/AndroidDriver - 服务器将正确处理此问题。