如何在UIAutomation iOS的javascript中获取文件内容(基本上是读取)本地文件

时间:2013-11-15 06:42:55

标签: javascript file-io ui-automation ios-ui-automation

是否有可能以JavaScript方式读取本地文件。

MyFolder文件:

     db.csv

     Parse.js

尝试在Parse.js中获取文件db.csv的内容,但是徒劳无功。

你可以分享一些我可以获得足够知识如何阅读文件的链接。 在Xcode5中运行Instruments,在.js文件中使用测试脚本,我必须从.csv文件中输入一些值。

3 个答案:

答案 0 :(得分: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 :(得分:1)

如果文件与您所在的站点位于同一个域中,则使用Ajax加载它。如果您正在使用Ajax,那就像

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

请注意,csv文件的路径将相对于您所在的网页,而不是JavaScript文件。

如果您不使用jQuery,则必须手动使用XmlHttpRequest对象进行Ajax调用。

虽然你的问题没有(似乎)处理它,但如果文件位于不同的域上,那么你必须使用jsonP或CORS。

而且,以防这是你的目标,不,你不能,在客户端 JavaScript打开某种Stream并读入文件。那将是一个可怕的安全漏洞。

答案 2 :(得分: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)