2017-08-09 58 views
0

我的Appium腳本在本地完美工作,但轉移到aws設備場,因爲一個類文件返回解析錯誤。 我想從這個類文件中的excel文件導入數據。我認爲錯誤是因爲excel文件的路徑。AWS設備場 - 腳本中的額外數據路徑

我上傳數據excel文件作爲額外的數據,但我找不到位置。

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"); 

請幫我解決這個問題。

回答

0

如果您嘗試將該文件放入項目的src/test/java/resources /中,會發生什麼情況?這樣它就可以用jar和device farm來構建,然後可以參考它。

[更新]

與示例項目從awslabs github上頁試過此我自己[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並創建一個新包「文件」裏面的它的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

+0

File src = new File(「/ Referenceapp -Appium-Test/src/test/resources/test.csv」);這不適合我。文件路徑仍然是錯誤的。 –

+0

愚蠢的問題,但你添加一個test.csv到該目錄嗎? – jmp

+0

您能否提供更多關於我如何遵循我所做的事情的信息? – jmp

0

@jmp

我使用JUnit和擺正位置爲 File src = new File("/acme-android-appium/src/test/resources/data1.xls");

我不清楚你上面說的XML文件。你能解釋一下我們如何在腳本中找到文件。

請看附圖。

project explorer

1

我爲AWS Device Farm團隊工作。

要讀取.xlsx.csv文件中的以下兩種方法可用於:

  1. 確保Excel文件src/test/resources/com/yourexcelfile.xlsx/csv
  2. 下放置這將在測試jar文件的文件放在下com夾。
  3. 一旦得到確認,你應該能夠讀取使用下面的兩段代碼中的一個文件:

無需任何外部庫:

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(); 

希望這有助於。