第一部分:-。您似乎已经使用 node server.js 启动了 appium 服务器 - 您可以通过localhost:4723/wd/hub/status
在浏览器中访问来检查服务器,这将返回服务器的一些详细信息。你已经这样做了。
命令输出将如下所示,确认服务器已启动:
info: Welcome to Appium v0.8.1 (REV ***********************************)
info: Appium REST http interface listener started on 0.0.0.0:4723
info - socket.io started
第二部分:-。接下来,您将 selenium RC 用于 Python、Java 或 c# 或任何您选择的语言。我使用了 c# 并且可以提供示例,这应该与您的测试类似。
要将 selenium 添加到 ac# 类:using OpenQA.Selenium.Remote;
您将所有数据传递给 selenium 所需的功能对象。存在一些自定义所需的功能,例如:
- 'app-package' 这是应用程序包名称,例如 com.myapp.main,
- 'app-activity' 这是要调用的应用程序主要活动,它也将启动应用程序。这通常是一个飞溅活动或主要活动,
- 'wait-activity' 是 Appium 启动后将检查的活动,这将是应用程序活动,但对我来说,如果对于某些测试,启动新活动而不是调用新活动是不同的,
- 'version' 取 android 版本,
“设备 ID”将您连接的设备或 AVD 带到命令和应用程序,该命令和应用程序将具有您要安装的 apk 的本地路径。这是在启动时签名并安装的,如果已经存在已退出的应用程序,它将为您跳过此步骤。
DesiredCapabilities caps = new DesiredCapabilities();
caps.SetCapability("app-package", "com.myapp.test");
caps.SetCapability("browserName", "");
caps.SetCapability("device", "Android");
caps.SetCapability("app-activity", "com.myapp.SplashActivity");
caps.SetCapability("takesScreenshot", true);
caps.SetCapability("version", "4.1.2");
caps.SetCapability("device ID", "uniquedeviceid");
caps.SetCapability("app", @"C:\path to\app\on\pc\app.apk");
在创建功能之后,您创建一个远程 Web 驱动程序对象,传递您使用的集线器 url,例如http://localhost:4723/wd/hub
,您创建的所需功能。
RemoteWebDriver driver = new RemoteWebDriver(new Uri("http://localhost:4723/wd/hub/"), caps);
此行使用 Appium 服务器的 ip 或主机开始侦听请求。对我来说,这一步标志着在连接的设备上安装和启动应用程序,希望这对你同样有效。这是您编写的 selenium 测试连接到 Appium 服务器的地方。
现在使用创建的driver
对象,您可以访问 Selenium rc 命令,其中 Appium 已经为 android 测试实现了许多替代方案。在这些过程中,您的 Appium 服务器控制台窗口应该会向您显示是否有任何问题。
输出将采用颜色编码,以帮助识别此窗口中的故障,但您可以按照自己的方式处理这些故障,并在需要时输出到文件。
更新多个设备
我不确定是否使用多个设备,我会考虑selenium 网格我之前尝试将 2 个设备添加到一台机器和测试有混淆,无论设备 ID 添加到配置和命令中,adb 都无法区分. Appium 团队一直在改进向服务器添加网格功能,我建议您查看Appium Grid(链接已更新)
对于我缺乏网格经验来进一步帮助您,我深表歉意。
问候,布赖恩