使用Selenoid测试android应用程序。 使用Appium在移动应用中搜索位置

我来自Luxoft。
帖子前言:


Selenoid是一个程序,允许您使用特殊的驱动程序来控制浏览器和Android模拟器 。 能够在Docker容器中独立运行它们中的每一个。


Selenoid的主要思想是为每个会话启动一个新容器(启动新的浏览器或模拟器),并在关闭会话后立即将其停止。


Selenoid可使保持高负载而无需额外的资源成本。


这篇文章将在Android模拟器中启动简单的测试。


准备工作


首先检查您的系统可以运行虚拟机。


处理器必须支持硬件虚拟化。 这意味着需要IntelVT或AMDV处理器扩展。 要验证处理器是否支持其中一种,请运行以下命令:


egrep '(vmx|svm)' /proc/cpuinfo 

码头工人


必须在您的操作系统上安装并运行Docker。


安装硒油


如果您具有基于Redhat的操作系统,则可以使用我的存储库来安装Configuration Manager


 yum -y install yum-plugin-copr yum copr enable antonpatsev/aerokube-cm-rpm yum -y install aerokube-cm 

如果您没有基于Redhat的操作系统,则可以下载并使用配置管理器二进制文件。


使用配置管理器运行Selenoid并构建browsers.json


如果您没有直接访问Internet和Docker映像的权限,则可以通过注册表下载:


 aerokube-cm selenoid start --force --browsers "android:6.0;chrome:78" --args "-session-attempt-timeout 2m -service-startup-timeout 2m" --registry -docker-registry 

如果您可以直接访问Internet。


 aerokube-cm selenoid start --force --browsers "android:6.0;chrome:78" --args "-session-attempt-timeout 2m -service-startup-timeout 2m" 

如果长时间安装了大型APK, --args "-session-attempt-timeout 2m -service-startup-timeout 2m"需要--args "-session-attempt-timeout 2m -service-startup-timeout 2m"--args "-session-attempt-timeout 2m -service-startup-timeout 2m"


--force覆盖browsers.json文件


由于Selenoid Configuration Manager尚不知道如何为移动Chrome浏览器配置browsers.json,因此您需要自行修复。


默认情况下,browsers.json在〜/ .aerokube / selenoid目录中生成。


生成的browsers.json文件,用于在Android模拟器中测试Android应用程序和Chrome。


 { "android": { "default": "6.0", "versions": { "6.0": { "image": "docker-registry:443/selenoid/android:6.0", "port": "4444", "path": "/wd/hub" } } }, "chrome": { "default": "mobile-75.0", "versions": { "mobile-75.0": { "image": "docker-registry:443/selenoid/chrome-mobile:75.0", "port": "4444", "path": "/wd/hub" } } } } 

到目前为止,移动chrome版本落后于常规chrome版本。
下载行动版Chrome的图片


 docker pull selenoid/chrome-mobile:75.0 

更改browsers.json


更改browsers.json文件时,需要重新加载硒油


 aerokube-cm selenoid stop 

 aerokube-cm selenoid start 

重新加载配置
您可以执行重新加载配置。 链接上的详细信息:
https://aerokube.com/selenoid/latest/#_reloading_configuration


检查Docker容器是否已启动并且图像已下载。


 docker ps docker images 


使用配置管理器运行Selenoid UI


 aerokube-cm selenoid-ui start --registry https://docker-registry 


 aerokube-cm selenoid-ui start 

检查Docker容器是否已启动并且图像已下载。


 docker ps docker images 


转到IP处的selenoid-ui,您在其中运行了类固醇和类固醇UI:8080


您应该有2个绿色的CONNECTED亮起,并用android和chrome编写。



要从主机系统访问Android,请将以下行添加到/ etc / hosts文件中:


 ip-- hypervisor 

演示测试


下载https://github.com/aerokube/demo-tests


在所有三个Java文件中,将RemoteWebDriver中的路径更改为hypervisor(您需要更改屏幕截图)。



或到您开始类硒酸盐的其他地址。


在AndroidRemoteApkTest.java文件中,更改可下载APK的路径。


 device.setCapability("app", "http://ci.example.com/game2048.apk"); 


device.setCapability(“ app”,“ http:// link-to-your-apk ”);



 device.setCapability("app", "http://hypervisor:8000/game2048.apk"); 

如果您从docker引用localhost,则将收到此错误,因为您正尝试从docker网络访问主服务器的localhost:


 Tests in error: browserTest(com.aerokube.selenoid.AndroidRemoteApkTest): An unknown server-side error occurred while processing the command. Original error: Problem downloading app from url http://localhost:8000/apk/game2048.apk: connect ECONNREFUSED 127.0.0.1:8000 

如何使您可以下载本地文件的方法降低了。


在文件DemoTest.java中,添加setCapability以便在Android上运行chrome以获得类似信息。



在每个Java文件中,您可以启用或禁用视频记录,通过VNC进行远程查看或管理以及登录到文件。 要禁用该选项,您需要在行首添加2个斜杠。



要使当前目录中的文件可供下载,可以在当前控制台中运行static-server-in-dir服务:


 yum -y install yum-plugin-copr yum copr enable antonpatsev/static-server-in-dir yum -y install static-server-in-dir cd to directory static-server-in-dir start         8000   static-server-in-dir stop 

运行测试


在demo-tests目录中,运行测试:


如果您需要指定设置并使用Maven代理(Nexus,Artifactory)


 mvn -s settings.xml clean test 

如果我们运行时可以直接访问Internet并且没有任何设置


 mvn clean test 

速度


android模拟器的总部署时间和1个测试的启动时间不到1分钟。


已知错误


https://github.com/aerokube/demo-tests/issues/5


测试记录


AndroidDemoTest.java:



AndroidRemoteApkTest.java:



DemoTest.java:



使用Appium在移动应用程序中搜索所需的位置


Appium是跨平台工具,即 允许您使用API​​编写针对移动平台(iOS,Android,Windows)的测试。 这是用于智能手机和平板电脑上的回归测试应用程序的最广泛使用的工具之一。


下载并运行Appium


转到File -> New Session Window



在“ Remote host字段中,指定运行Selenoid的服务器的地址。


在“ Remote Port字段中,指定运行Selenoid的端口-通常为4444。


在“ Remote Path字段中,指定/wd/hub


Desired Capabiliting指定Desired Capabiliting


最小的JSON是这样的:


 { "browserName": "chrome", "browserVersion": "mobile-75.0", "enableVNC": true } 

会议开始后,您将获得以下图片:



现在,您可以浏览/搜索所需的位置。



电报聊天:


https://t.me/aerokube-聊天Aerokube


https://t.me/atinfo_chat-与测试自动化工程师聊天

Source: https://habr.com/ru/post/zh-CN478816/


All Articles