我正在寻找iMacro脚本2部分的帮助......
Part1 - Variable
我点击页面的下一行以访问我需要提取的页面。
1st Link
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次)?另外,有没有办法从iMacros格式化CSV
文件,以便每个新的运行从另一行开始(目前,所有数据都提取到多行的第1行。)
提前谢谢你,
亚当
答案 0 :(得分: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();
}