Advertisement
Guest User

Untitled

a guest
Jul 7th, 2015
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.87 KB | None | 0 0
  1. // FIXME: use %PROGRAMFILES% to get at "c:\\Program\ Files"
  2. // FIXME: put SAVE_DIR on the current user's desktop?
  3. // FIXME: make it configurable via command-line options?
  4. var BROWSERS = {
  5. 'ff' : {
  6. 'PATH' : "c:\\Program\ Files\\Mozilla\ Firefox\\",
  7. 'SAVE_DIR' : ".\\firefox\\"
  8. },
  9. 'ie' : {
  10. 'PATH' : "",
  11. 'SAVE_DIR' : ".\\internet-explorer\\"
  12. }
  13. };
  14.  
  15.  
  16.  
  17. // the URL file is unnamed and required
  18. if (WScript.Arguments.Unnamed.length < 1) {
  19. WScript.Echo("Error: must specifiy input file.");
  20. WScript.Quit();
  21. }
  22.  
  23.  
  24.  
  25. var browsers_to_check = [];
  26.  
  27. // the browsers are named, and optional
  28. // /b:ff,ie
  29. if (WScript.Arguments.Named.length > 0) {
  30. var b_opt = WScript.Arguments.Named.Item("b");
  31. var req_browsers = b_opt.split(",");
  32. for (var i=0; i < req_browsers.length; i++) {
  33. if (typeof(BROWSERS[req_browsers[i]]) != 'undefined') {
  34. browsers_to_check.push(req_browsers[i]);
  35. }
  36. }
  37. } else {
  38. // prime browsers_to_check w/ the available browsers
  39. for (var b in BROWSERS) {
  40. browsers_to_check.push(b);
  41. }
  42. }
  43.  
  44. WScript.Echo("Browsers to check: " + browsers_to_check.join(","));
  45.  
  46.  
  47.  
  48. var url_list_filename = WScript.Arguments(0);
  49.  
  50. var ForReading = 1, ForWriting = 2, ForAppending = 8;
  51. var TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0;
  52.  
  53. var fsobj = new ActiveXObject("Scripting.FileSystemObject");
  54.  
  55. // FIXME: check if input file exists!
  56.  
  57. var file = fsobj.GetFile(url_list_filename);
  58. var textstream = file.OpenAsTextStream(ForReading, TristateUseDefault);
  59.  
  60.  
  61. var save_dir;
  62. for (var i=0; i < browsers_to_check.length; i++) {
  63. save_dir = BROWSERS[browsers_to_check[i]]['SAVE_DIR'];
  64.  
  65. // FIXME: if the target folders exist, do we drop the files into the folder or bail?
  66. if (fsobj.FolderExists(save_dir)) {
  67. WScript.Echo("Warning: " + save_dir + " already exists.");
  68. } else {
  69. fsobj.CreateFolder(save_dir);
  70. }
  71. }
  72.  
  73.  
  74. function takeScreenshot(browser, url, filename) {
  75. var cmd = "";
  76. switch(browser) {
  77. case 'ff':
  78. cmd = BROWSERS[browser]['PATH'] + "firefox.exe -savepng " + url + " -saveas " + BROWSERS[browser]['SAVE_DIR'] + filename;
  79. break;
  80. case 'ie':
  81. cmd = BROWSERS[browser]['PATH'] + "IECapt.exe --url=" + url + " --out=" + BROWSERS[browser]['SAVE_DIR'] + filename;
  82. break;
  83. }
  84.  
  85. WScript.Echo(" > " + browser);
  86. var shell = new ActiveXObject("WScript.Shell");
  87. exec = shell.Exec(cmd);
  88. // hmph. so it looks like WshShell.Exec is asynchronous
  89. while (exec.Status == 0) {
  90. WScript.Sleep(100);
  91. }
  92. }
  93.  
  94.  
  95. var status, url, path, file, screenshot_file, exec;
  96.  
  97. while (!textstream.AtEndOfStream) {
  98. url = textstream.ReadLine();
  99.  
  100. // FIXME: validate URL before attempting to use it
  101. // FIXME: handle URLs that have 1) no filenames 2) query strings, 3) etc.
  102. path = url.split("/");
  103. file = path[path.length-1];
  104. screenshot_file = file + ".png";
  105.  
  106. WScript.Echo(url + " >> " + screenshot_file);
  107.  
  108. for (var i=0; i< browsers_to_check.length; i++) {
  109. takeScreenshot(browsers_to_check[i], url, screenshot_file);
  110. }
  111.  
  112. }
  113.  
  114. textstream.Close();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement