My Appium脚本完美地处理本地但移动到aws设备场,由于一个类文件而返回解析错误。 我正在尝试从此类文件中的excel文件导入数据。我认为错误是因为excel文件的路径。
我将数据excel文件作为额外数据上传到aws但我找不到位置。
public static void changeCity() throws InterruptedException{
try{
File src = new File("data1.xls");
Workbook wb = Workbook.getWorkbook(src);
Sheet sh1 = wb.getSheet(0);
Sheet bugzillaUpdation = wb.getSheet("UtilityCredentials");
请帮我解决这个问题。
@jmp
我使用junit并将位置设为
File src = new File("/acme-android-appium/src/test/resources/data1.xls");
我不清楚你上面说的XML文件。能否解释一下我们如何在脚本中找到文件。
请查看附件图片。
答案 0 :(得分:1)
我在AWS Device Farm团队工作。
要阅读.xlsx
或.csv
文件,可以使用以下两种方法:
src/test/resources/com/yourexcelfile.xlsx/csv
com
文件夹下的测试jar文件中。 没有任何外部库:
java.net.URL resource = ClassLoader.getSystemResource("/com/yourexcelfile.xlsx");
File file = new File(resource.toURI());
FileInputStream input = new FileInputStream(file);
OR
如果您使用Apache POI API读取Excel文件:
InputStream ins = getClass().getResourceAsStream(“/com/yourexcelfile.xlsx”);
workbook = new XSSFWorkbook(ins);
sheet = workbook.getSheetAt(1);
ins.close();
希望这有帮助。
答案 1 :(得分:0)
如果您尝试将该文件放在项目的src / test / java / resources /中会发生什么?这样就可以使用jar和设备场构建它可能会引用它。
[更新]
自己尝试使用awslabs github page [1]中的示例项目。我还可以选择创建一个包含此xml的testng.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Default Suite">
<test name="test">
<classes>
<class name="file.FindFile"/>
</classes>
</test>
</suite>
此文件位于/Referenceapp-Appium-Test/src/test/resources/testng.xml中,并使用此插件从pom.xml引用:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
此处使用testng.xml仅运行特定测试,而不是示例项目中的所有测试。对于FYI知识,它是可选的。
然后我在同一目录中创建了一个test.csv文件,并创建了一个新的包'file',其中包含一个测试类'FindFile':
package file;
import java.io.File;
import org.testng.annotations.Test;
import Pages.BasePage;
import io.appium.java_client.AppiumDriver;
public class FindFile extends BasePage {
protected FindFile(AppiumDriver driver) {
super(driver);
// TODO Auto-generated constructor stub
}
@Test
public static void changeCity() throws InterruptedException{
try{
File src = new File("/Referenceapp-Appium-Test/src/test/resources/test.csv");
System.out.println("File found!!!");
}catch(Exception e){
System.out.println(e);
}
}
}
因此,当我在设备场中使用随机apk执行此操作时,我只执行了FindFile.java中的测试。当我查看appium java输出时,我在那里看到了println,这就是我知道它的工作原理。
[TestNG] RUNNING: Suite: "Command line test" containing "1" Tests (config: null)
[TestNG] INVOKING: "Command line test" - file.FindFile.changeCity()
[Invoker 1121172875] Invoking file.FindFile.changeCity
File found!!!
[TestNG] PASSED: "Command line test" - file.FindFile.changeCity() finished in 35 ms
===== Invoked methods
FindFile.changeCity()[pri:0, instance:null] <static>
=====
Creating /tmp/scratchLT6UDz.scratch/resultsm_f_bN/Command line suite/Command line test.html
Creating /tmp/scratchLT6UDz.scratch/resultsm_f_bN/Command line suite/Command line test.xml
PASSED: changeCity
希望能帮助
最好的问候
詹姆斯
[1] https://github.com/awslabs/aws-device-farm-appium-tests-for-sample-app