appium - 在 AWS 设备场上访问 Appium 测试的其他测试文件
问题描述
我正在 AWS 设备场上使用 JUnit 运行 Appium 测试。有没有办法上传额外的测试文件并从我的代码中访问它们?所以基本上,我可以访问运行 Appium 测试的容器的文件系统吗?
我的 JAR 文件中有必要的文件(根据 AWS 要求位于 zip 文件中),但我不确定 AWS 在测试运行期间是否以及在何处从该 JAR 中提取文件(可能不是)。
有一个名为的选项Add extra data
可用于上传文件,但我不确定如何从我的代码中访问它们。该文档指出:
对于 iOS,额外的数据实际上在应用程序安装目录中 [...] 在 Android 上,我们将其解压缩到 sdcard 的根目录中。
这是否意味着我需要从手机中提取文件(Appium 可以这样做)并将它们放在某个临时文件夹中?我也可以尝试从 git repo 或网络共享中提取文件,但我希望有一种更简单的方法来访问文件系统。另一个问题是是否有一些限制根本不允许我写入文件系统。
有人对这个有经验么?
解决方案
我知道有两种方法可以访问设备主机上的其他文件。
将它包含在 jar 中(正如您已经在做的那样),然后使用当前线程访问文件。所以张贴我做这个的地方
InputStream input = null; //load in the properties file from src/test/resources try { input = Thread.currentThread().getContextClassLoader().getResourceAsStream("myproperties.properties"); // load a properties file prop.load(input); // get the property value and print it out System.out.println(prop.getProperty("devicefarm")); } catch (IOException ex) { ex.printStackTrace(); }
将其包含在使用复制资源插件上传到 Device Farm 的 zip 中。
聚甲醛:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/dependency-jars/</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/dependency-resources</outputDirectory>
<resources>
<resource>
<directory>src/test/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<finalName>zip-with-dependencies</finalName>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/main/assembly/zip.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
邮编.xml:
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 "
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<id>zip</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>${project.build.directory}</directory>
<outputDirectory>./</outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
<fileSet>
<directory>${project.build.directory}</directory>
<outputDirectory>./</outputDirectory>
<includes>
<include>/dependency-jars/</include>
</includes>
</fileSet>
<fileSet>
<directory>${project.build.directory}</directory>
<outputDirectory>./</outputDirectory>
<includes>
<include>/dependency-resources/</include>
</includes>
</fileSet>
</fileSets>
</assembly>
然后,我们可以使用该路径访问打包在上传到 Device Farm 的 zip 中的其他文件./dependency-resources/somefilename
Device Farm的SDK会将测试包解压到Device主机的/tmp目录下。如果您在specify device state
页面上导出 /tmp 目录,您可以导出使用自定义工件上传的相同测试包。
您提到的extra data
功能只会将其他文件放入设备中,而不是运行测试的设备主机中。还使用 appium 来拉取和推送文件,我相信目前仅适用于模拟器而不是真实设备。
https://discuss.appium.io/t/pull-file-from-ios-device/1541/3
-詹姆士
推荐阅读
- javascript - 无法使用 D3 强制布局按节点属性绘制链接
- python - 无法在 mac 中初始化 pipenv(类型错误:序列项 0:预期的 str 实例,找到无类型)
- javascript - 使用 FileReader API 时无法设置 Vue 数据变量
- javascript - Socket.io 在页面刷新时创建多个连接
- java - Cloud Firestore - 动态查询
- matlab - Octave 与 Matlab 和 Scilab 的性能对比
- android - 模块依赖于一个或多个 Android 库,但在使用 VS 2017 构建 Cordova 应用程序时出现 Jar 错误
- windows - 有没有办法在 Windows 中创建指向最新文件的链接/符号链接/快捷方式?继续跟踪最新的日志文件
- javascript - 动态帧名称
- airflow - Airflow Jinja 渲染模板