【问题标题】:How to read and write to a file (Javascript) in ui automation?如何在 ui 自动化中读取和写入文件(Javascript)?
【发布时间】:2015-09-22 02:14:25
【问题描述】:

我想在运行期间识别几个属性并形成一个 json 对象,我想将其写入“.json”文件并将其保存在磁盘上。

var target = UIATarget.localTarget();
var properties = new Object();
var jsonObjectToRecord = {"properties":properties}
jsonObjectToRecord.properties.name = "My App"
UIALogger.logMessage("Pretty Print TEST Log"+jsonObjectToRecord.properties.name);
var str = JSON.stringify(jsonObjectToRecord)
UIALogger.logMessage(str);
// -- CODE TO WRITE THIS JSON TO A FILE AND SAVE ON THE DISK --

我试过了:

// Sample code to see if it is possible to write data
// onto some file from my automation script
function WriteToFile()
 {

    set fso = CreateObject("Scripting.FileSystemObject");  
    set s = fso.CreateTextFile("/Volumes/DEV/test.txt", True);
    s.writeline("HI");
    s.writeline("Bye");
    s.writeline("-----------------------------");
    s.Close();
 }

function WriteFile()
{
    // Create an instance of StreamWriter to write text to a file.
    sw = new StreamWriter("TestFile.txt");
    // Add some text to the file.
    sw.Write("This is the ");
    sw.WriteLine("header for the file.");
    sw.WriteLine("-------------------");
    // Arbitrary objects can also be written to the file.
    sw.Write("The date is: ");
    sw.WriteLine(DateTime.Now);
    sw.Close();
}

但仍然无法从 ui 自动化工具读取数据并将数据写入文件

可能的解决方法 ?? 如果我们可以从我的 ui 自动化脚本执行终端命令,则重定向到标准输出。那么我们可以从脚本中执行终端命令吗?

没试过: 1.假设我们可以包含具有这些方法的库并试一试。

【问题讨论】:

  • 你用的是什么UI自动化工具,这个脚本是在普通浏览器中执行的吗?
  • @ZigmaEmpire 我试图在我的仪器脚本中执行普通浏览器脚本
  • 此脚本当前是否在 google chrome、firefox 等浏览器上运行?还是什么?
  • @ZigmaEmpire 不,它不是在运行良好的 UI 自动化工具上运行的第一部分,WriteToFile 是我无法做到的
  • @ZigmaEmpire 正在寻找类似的解决方案,我可以从我的自动化脚本中写入文件。如果我不清楚,请问我,谢谢:)

标签: javascript json instruments ios-ui-automation


【解决方案1】:

您的假设很好,但 XCode UI 自动化脚本不是完整的 JavaScript。

我认为您不能简单地在 XCode UI 自动化脚本中编写一个基于普通浏览器的 JavaScript。

set fso = CreateObject("Scripting.FileSystemObject");

不是 JavaScript,它是 VBScript,只能在 Microsoft 平台和 QTP 等测试工具中工作。

Scripting.FileSystemObject

是只存在于 Microsoft Windows 中的 ActiveX 对象

Apple JavaScript 库仅提供了一些 JavaScript 函数,如基本数学、数组、...等。因此您只能使用此处提供的类https://developer.apple.com/library/ios/documentation/DeveloperTools/Reference/UIAutomationRef/

如果您想编写更多脚本,请尝试 Selenium IOS 驱动程序http://ios-driver.github.io/ios-driver/

【讨论】:

    【解决方案2】:

    嘿,这是我一直在寻找一个项目但从未完全实现的东西,所以这个答案将更像是一个指导,而不是一步一步地复制和粘贴。

    首先,您需要创建一个写入文件的 bash 脚本。这可以很简单

    !/bin/bash
    echo $1 >> ${filename.json}
    

    然后你从你的 Xcode Instruments UIAutomation 工具中调用它

    var target = UIATarget.localTarget();
    var host = target.host();
    
    var result = host.performTaskWithPathArgumentsTimeout("your/script/path", ["Object description in JSON format"], 5);
    

    然后在您的自动化结束后,您可以在您的计算机上加载文件路径以查看结果。

    编辑:这将允许逐行写入文件,但实际的 JSON 格式将取决于您。看看一些例子,我认为实现起来并不困难,但显然你首先需要考虑一下。

    【讨论】:

      猜你喜欢
      • 2016-08-20
      • 2018-10-03
      • 1970-01-01
      • 2012-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-17
      • 1970-01-01
      相关资源
      最近更新 更多