Advertisement
Guest User

Untitled

a guest
Nov 5th, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var genie = require('genie').create({ xpathVersion: '2.0' });
  2.  
  3. var x = require('casper').selectXPath;
  4. var ex = genie.extendedXpath(x);
  5.  
  6. var blacklist = ['.css', '.png', '.gif', '.jpeg', 'google-analytics', 'yandex'];
  7.  
  8. var files = genie.files();
  9.  
  10. //** Credentials **//
  11. var username = "adobreva@ceicdata.com";
  12. var password = "ceic12345";
  13.  
  14. /** Get current year **/
  15. var now = new Date();
  16. var currentYear = now.getFullYear();
  17. var prevYear = now.getFullYear() - 1;
  18.  
  19. var yearButtons = "";
  20.  
  21. files.blacklist(blacklist)
  22.     .retry(5)
  23.     .add({
  24. //        "file1.xls": {
  25. //            "selectorFilename" : "//a[contains(text(),'UK-J01_Macro Rows 4-203')]"
  26. //        }
  27. ////        },
  28.         "file2.xls": {
  29.             "selectorFilename" : "//a[contains(text(),'UK-J01_Macro Rows 205-2097')]"
  30.         }
  31.     })
  32. //    .add("file1.xls")
  33.     .steps(function (parameters) {
  34.         /** Log In **/
  35.         this.thenOpen("https://www.uktradeinfo.com/Statistics/BuildYourOwnTables/Pages/MyReportsLogin.aspx");
  36.         this.then(function(){
  37.             var logInButton = this.getElementAttribute(x("//input[contains(@value,'Log in')]"), "onclick");
  38.             if (logInButton) {
  39.                 this.evaluate(function(username, password){
  40.                     $(document).xpath("//input[contains(@id,'txtUserName')]").val(username);
  41.                     $(document).xpath("//input[contains(@id,'txtPassword')]").val(password);
  42.                 }, username, password)
  43.                 this.waitAndClick(ex("//input[contains(@value,'Log in')]"));
  44.             } else {
  45.                 console.log("ALREADY LOGGED IN");
  46.             }
  47.         });
  48.  
  49.         /** Main Url **/
  50.         this.thenOpen("https://www.uktradeinfo.com/Statistics/BuildYourOwnTables/Pages/MyReports.aspx");
  51.  
  52.         /** Xpath navigation to the main report **/
  53.         this.waitAndClick(ex(parameters.selectorFilename));
  54. //        this.thenEvaluate(function() {
  55. //            console.log("aspxMIClick(event, 'ctl00_ctl31_g_f8e2e96a_9b04_4c97_97de_7290d78ab387_ctl00_StatNavASPxPivotGrid_FVM', '2')");
  56. //        });
  57. //        this.wait(60000);
  58. //        this.thenEvaluate(function() {
  59. //            $('#ctl00_ctl31_g_f8e2e96a_9b04_4c97_97de_7290d78ab387_ctl00_StatNavASPxPivotGrid_FVM').css('visibility','visible');
  60. //        });
  61. //        this.waitAndClick(ex("//span[contains(.,'Expand All')]/ancestor::tr[contains(@onclick,'event')]"));
  62. //        this.wait(60000);
  63. //        this.then(function() {
  64. //            var expandFunc = this.getElementAttribute(ex("//span[contains(.,'Expand All')]/ancestor::tr[contains(@onclick,'event')]", "onclick"));
  65. ////            var expandFunc = "ctl00_ctl31_g_f8e2e96a_9b04_4c97_97de_7290d78ab387_ctl00_StatNavASPxPivotGrid_FVM";
  66. //            console.log("LOGS : " + expandFunc);
  67. //            this.evaluate(function(expandFunc) {
  68. //                console.log("LOGS ...... : " + expandFunc);
  69. //                $(document).xpath("//span[contains(.,'Expand All')]/ancestor::tr[contains(@onclick,'event')]").click().change();
  70. ////                $(document).xpath('//tr[contains(@onclick,"' + expandFunc + '")]').click().change();
  71. //            }, expandFunc)
  72. //            this.wait(45000);
  73. //            this.capture("downloads/sample.jpg");
  74. //        });
  75.  
  76.         //tr[contains(@onclick,"aspxMIClick(event, 'ctl00_ctl31_g_f8e2e96a_9b04_4c97_97de_7290d78ab387_ctl00_StatNavASPxPivotGrid_FVM', '2')")]
  77. //        this.thenEvaluate(function(){
  78. //             event, 'ctl00_ctl31_g_f8e2e96a_9b04_4c97_97de_7290d78ab387_ctl00_StatNavASPxPivotGrid_FVM', '2'
  79. //        })
  80. //        this.waitAndClick(ex("//tr[contains(@id,'ctl00_ctl31_g_f8e2e96a_9b04_4c97_97de_7290d78ab387_ctl00_StatNavASPxPivotGrid_FVM_DXI2_')]"));
  81. //        this.wait(60000);
  82. //        this.capture("downloads/sample.jpg");
  83. //        this.waitForSelector(ex("//select[contains(@name,'ExportType')]"), function success(){
  84. //            console.log("EXPANDED!!");
  85. //        }, function fail() {
  86. //            console.log("FAILED to EXPAND!!");
  87. //        }, 200000);
  88.  
  89. //        /** Select Excel as file extension then Export the table **/
  90. //        var optionExcel = this.getElementAttribute(ex("//option[contains(text(),'Excel')]"), "value");
  91. //        var exportButton = this.getElementAttribute(ex("//a[ends-with(@id,'Export')]"), "href");
  92. //            exportButton = exportButton.replace(/javascript:/g,'');
  93. //        this.evaluate(function(optionExcel, exportButton) {
  94. //            console.log(exportButton);
  95. //            console.log(optionExcel);
  96. //            $(document).xpath("//select[contains(@id,'ExportType')]").val(optionExcel).change();
  97. //            $(document).xpath("//a[ends-with(@id,'Export')]").attr("href", exportButton).click();
  98. //        }, optionExcel, exportButton);
  99.  
  100. //        this.waitAndClick(ex("//a[contains(text(),'UK-J01_Macro Rows 205-2097')]"));
  101.         this.then(function(){
  102.  
  103.             /** Get all year buttons **/
  104.             var currentYearButtons = this.getElementsAttribute(x("//td[contains(text(),'" + currentYear + "')]/img"), "onclick");
  105.             var prevYearButtons = this.getElementsAttribute(x("//td[contains(text(),'" + prevYear + "')]/img"), "onclick");
  106.  
  107.             /** Check if Current year data is available or not **/
  108.             if (currentYearButtons) {
  109.                 yearButtons = currentYearButtons;
  110.                 year = currentYear;
  111.             } else {
  112.                 yearButtons = prevYearButtons;
  113.                 year = prevYear;
  114.             }
  115.  
  116.             /** Click to expand all valid year buttons **/
  117.             yearButtons = yearButtons.reverse();
  118.             this.eachThen(yearButtons, function eachDo(entry) {
  119.                 var yearButtonFunction = entry.data;
  120.                 this.evaluate(function(yearButtonFunction) {
  121.                     $(document).xpath('//img[contains(@onclick,"' + yearButtonFunction + '")]').click().change();
  122.                 }, yearButtonFunction);
  123.                 this.wait(60000);
  124.                 this.capture("downloads/" + yearButtonFunction + ".jpg");
  125.             });
  126.  
  127.         });
  128.  
  129.         /** Download/Export Button**/
  130.         this.thenOpen("https://www.uktradeinfo.com/Statistics/BuildYourOwnTables/Pages/Table.aspx?action=export&type=XLS");
  131.         this.wait(5000);
  132.     });
  133.  
  134. genie.run(files);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement