3

我正在为我的 iMacro 脚本的 2 个部分寻求帮助...

Part1 - Variable

我单击页面的以下行以访问我需要从中提取的页面。

第一个链接

TAG POS=**8** TYPE=A FORM=NAME:xxyy ATTR=HREF:https://aaa.aaaa.com/en/administration/xxxx.jsp?reqID=h*

第二个链接

TAG POS=**9** TYPE=A FORM=NAME:xxyy ATTR=HREF:https://aaa.aaaa.com/en/administration/xxxx.jsp?reqID=h*

标签 pos 是变量,我怎样才能得到这个,以便在循环运行时,宏将选择屏幕上的下一个值(即选择 8、9、10)?有些屏幕有 100 多个可供点击的链接。

第 2 部分 - 保存 CSV 文件

我的文件中有 saveas 行。但是我怎样才能使它只csv创建一个文件(即使宏运行了 50 次)?此外,有没有办法CSV从 iMacros 格式化文件,以便每次新运行都从另一行开始(目前,所有数据都提取到多列的第 1 行。)

先感谢您,

亚当

4

1 回答 1

3

这将满足您的要求。它将循环宏并每次在宏中设置新的位置编号。

1)

    var macro;

    macro ="CODE:";
    macro +="TAG POS={{number}} TYPE=A FORM=NAME:xxyy ATTR=HREF:https://aaa.aaaa.com/en/administration/xxxx.jsp?reqID=h*"+"\n";


for(var i=1;i<100;i++)
{

iimSet("number",i)
iimPlay(macro)

}

对于第二部分的解决方案,您将需要 JavaScript 脚本。第一部分是声明宏,第二部分是启动宏,第三部分是将提取的文本保存到文件中的函数。每次运行它都会保存在新行中。

2)

var macroExtractSomething;

macroExtractSomething ="CODE:";
macroExtractSomething +="TAG POS=1 TYPE=DIV ATTR=CLASS:some_class_of_some_div EXTRACT=TXT"+"\n";



iimPlay(macroExtractSomething)
var extracted_text=iimGetLastExtract();

WriteFile("C:\\some_folder\\some_file.csv",extracted)




  //This function writes string into a file. It will also create file on that location
    function WriteFile(path,string)
    {

    //import FileUtils.jsm
    Components.utils.import("resource://gre/modules/FileUtils.jsm");
    //declare file
    var file = new FileUtils.File(path);

    //declare file path
    file.initWithPath(path);

    //if it exists move on if not create it
    if (!file.exists())
    {
    file.create(file.NORMAL_FILE_TYPE, 0666);
    }

    var charset = 'EUC-JP';
    var fileStream = Components.classes['@mozilla.org/network/file-output-stream;1']
    .createInstance(Components.interfaces.nsIFileOutputStream);
    fileStream.init(file, 18, 0x200, false);
    var converterStream = Components
    .classes['@mozilla.org/intl/converter-output-stream;1']
    .createInstance(Components.interfaces.nsIConverterOutputStream);
    converterStream.init(fileStream, charset, string.length,
    Components.interfaces.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER);

    //write file to location
    converterStream.writeString("\r\n"+string);
    converterStream.close();
    fileStream.close();


    }
于 2013-02-04T00:20:45.910 回答