2013-11-15 37 views
3

有沒有一種可能的方式來讀取JavaScript中的本地文件。如何在javascript中爲UIAutomation獲取文件內容(基本讀取)本地文件iOS

MyFolder文件:

 db.csv 

    Parse.js 

試圖在Parse.js獲取文件db.csv的內容,但徒勞無功。

你能分享一些鏈接,我可以獲得足夠的知識如何閱讀文件。 在Xcode5中運行儀器,測試腳本放在.js文件中,我必須從.csv文件中提供一些值。

+0

您能分享一下您嘗試過的方式,以及失敗的方式。 **快速回答:**如果您在瀏覽器中執行JavaScript,則無法從**本地計算機**讀取文件。瀏覽器不允許這樣做。 – gideon

+2

http://stackoverflow.com/questions/7431268/how-read-data-from-csv-file-using-javascript這可能會幫助你出來 –

+0

@gideon和Maverick,這是一個關於Apple的iOS測試UIAutomation框架的問題,(儘管用JavaScript編寫)提供了對主機shell的訪問。 – Ian

回答

3

iOS UIAutomation,apple提供了一個在目標主機上運行任務的api。

performTaskWithPathArgumentsTimeout 

利用這一點,我們可以有一個bash腳本打印輸出,我們希望在第一種情況下獲取文件的內容。

對於此要求,Bash腳本可以像這樣簡單。

#! /bin/bash 
FILE_NAME="$1" 
cat $FILE_NAME 

將其另存爲例如FileReader.sh文件。

而在你的自動化腳本,

var target = UIATarget.localTarget(); 
    var host = target.host(); 
    var result = host.performTaskWithPathArgumentsTimeout(executablePath,[filePath,fileName], 15); 
UIALogger.logDebug("exitCode: " + result.exitCode); 
    UIALogger.logDebug("stdout: " + result.stdout); 
    UIALogger.logDebug("stderr: " + result.stderr); 

其中, executablePath是命令需要執行地方。

var executablePath = "/bin/sh"; 

filePath是創建的FileReader.sh文件的位置。執行時,將內容輸出到標準輸出(在我們的要求中)。 [給出文件的完全絕對路徑]

fileName是從中提取內容的實際文件。 [給出文件的完全絕對路徑]在我的情況下,我有一個Contents.csv文件,我必須閱讀。

最後一個參數是以秒爲單位的超時時間。

希望這可以幫助其他人,試圖獲取執行iOS UIAutomation的內容(閱讀文件)。

參考文獻:

https://stackoverflow.com/a/19016573/344798

https://developer.apple.com/library/iOS/documentation/UIAutomation/Reference/UIAHostClassReference/UIAHost/UIAHost.html

1

如果該文件與您所在的網站位於同一個域中,則可以使用Ajax加載該文件。如果你使用Ajax,它是像

$.get('db.csv', function(csvContent){ 
    //process here 
}); 

只要注意的是,路徑csv文件將是相對於網頁的你,而不是JavaScript文件是。

如果您不使用jQuery,您必須手動使用XmlHttpRequest對象來執行Ajax調用。

雖然你的問題似乎沒有處理它,如果該文件位於不同的域,那麼你必須使用jsonP或CORS。

而且,萬一這是你的目標,不,你不能在客戶端 JavaScript打開某種流並讀入文件。這將是一個巨大的安全漏洞。

+0

@亞當,感謝您的快速幫助。現在我不使用Ajax,如果知道的話,請告訴我,如果有可能使用javascript。任何關於相同的意見都是值得歡迎的 – coder284

+0

@ coder284你的問題不是很清楚。你是否在服務器上,瀏覽器上運行javascript,你是否想要讀取本地文件或從服務器返回的文件,這是什麼? – gideon

+0

@ coder284 - 絕對不是。您無法打開某種StreamReader並在客戶端JavaScript中讀取文件 –

0

這是Illuminator的主機功能庫中的相當簡單的功能:

function readFromFile(path) { 
    var result = target.host().performTaskWithPathArgumentsTimeout("/bin/cat", [path], 10); 

    // be verbose if something didn't go well 
    if (0 != result.exitCode) { 
     throw new Error("readFromFile failed: " + result.stderr); 
    } 
    return result.stdout; 
} 

如果您正在使用照明燈,這是host().readFromFile(path)

相關問題