通过 shell 脚本启动 appium 服务器的问题

Posted

技术标签:

【中文标题】通过 shell 脚本启动 appium 服务器的问题【英文标题】:Issues in launching appium server through shell script 【发布时间】:2015-10-26 07:18:45 【问题描述】:

我一直在尝试在我的 RHEL 机器上使用几个 android 设备设置 appium。安装完成,我使用以下命令启动设备的 appium 实例。

appium -U xxxxxxx -a 127.0.0.1 -p 4725 -bp 4728 --no-reset

我还有一个用于处理 ui 元素的 Java 类,我在其中使用以下内容初始化我的 Android 驱动程序

    DesiredCapabilities caps = new DesiredCapabilities();
    caps.setCapability("platformName", "Android");
    caps.setCapability("deviceName", "Device");
    caps.setCapability("platformVersion", "5.0");
    caps.setCapability("udid", "xxxxxxx");
    caps.setCapability("appPackage", "yyyyyyy");
    caps.setCapability("appActivity", "zzzzz");

   driver = new AndroidDriver(new URL("http://127.0.0.1:4725/wd/hub"), caps);

但在每次运行时,初始化都会失败并显示以下内容:

 [exec]    Unhandled error: Error: connect ECONNREFUSED 127.0.0.1:4728
 [exec]     at Object.exports._errnoException (util.js:874:11)
 [exec]     at exports._exceptionWithHostPort (util.js:897:20)

当我尝试使用 telnet 本地端口时

$telnet localhost 4728

它失败了

Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
telnet: Unable to connect to remote host: Connection refused

是在设备上打开引导端口还是在主机本身上打开。如果它在主机本身上,为什么 appium 服务器没有打开(或无法打开)端口?任何人都可以帮助解决导致问题的根源吗?我在初始化时做错了吗?

【问题讨论】:

【参考方案1】:

我认为问题出在这里:

driver = new AndroidDriver(new URL("http://127.0.0.1:4725/wd/hub"), caps);

这表示 Selenium Grid Hub 正在使用 端口 4725,但是;

appium -U xxxxxxx -a 127.0.0.1 -p 4725 -bp 4728 --no-reset

表示 端口 4725 用于 Selenium Grid 节点。

您需要使用正确的集线器端口更正 java,或者如果正在使用 4725,则需要为节点指定一个新端口。

希望这会有所帮助。

【讨论】:

以上是关于通过 shell 脚本启动 appium 服务器的问题的主要内容,如果未能解决你的问题,请参考以下文章

再appium中怎样运行python脚本

Appium+Python app自动化测试之脚本启动和停止Appium服务

appium自动化测试框架——自动化启动多台设备思路梳理

用命令方式启动停止appium服务和app

Appium 服务命令行参数

通过Shell开发企业级标准服务启动脚本案例(MySQL)