java - Unable to load entire page using Selenium PhantomJs driver -


i using selenium library in java scrap site.i using phantomjsdriver webdriver.this site has urls present in list(li) tags interested in.the problem site has 64 (li) elements receiving 16 (li) elements.here code:

desiredcapabilities caps=new desiredcapabilities(); caps.setjavascriptenabled(true); caps.setcapability(phantomjsdriverservice.phantomjs_executable_path_property    , "path"); webdriver driver=new phantomjsdriver(caps); driver.get("some website");  webdriverwait wait=new webdriverwait(driver, 600);  wait.until(new expectedcondition<boolean>() {     boolean resetcount=true;     int counter=5;     @override     public boolean apply(webdriver d) {         if(resetcount){             ((javascriptexecutor) d).executescript(                     "   window.msscount="+counter+";\r\n" +                      "   window.mssjsdelay=function mssjsdelay(){\r\n" +                      "       if((typeof jquery != 'undefined') && (jquery.active !== 0 || $(\":animated\").length !== 0))\r\n" +                      "           window.msscount="+counter+";\r\n" +                      "       window.msscount-->0 &&\r\n" +                      "       settimeout(window.mssjsdelay,window.msscount+1);\r\n" +                      "   }\r\n" +                      "   window.mssjsdelay();");             resetcount=false;         }         boolean ready=false;         try{             ready=-1==((long) ((javascriptexecutor) d).executescript(                     "if(typeof window.mssjsdelay!=\"function\"){\r\n" +                      "   window.msscount="+counter+";\r\n" +                      "   window.mssjsdelay=function mssjsdelay(){\r\n" +                      "       if((typeof jquery != 'undefined') && (jquery.active !== 0 || $(\":animated\").length !== 0))\r\n" +                      "           window.msscount="+counter+";\r\n" +                      "       window.msscount-->0 &&\r\n" +                      "       settimeout(window.mssjsdelay,window.msscount+1);\r\n" +                      "   }\r\n" +                      "   window.mssjsdelay();\r\n" +                      "}\r\n" +                      "return window.msscount;"));         }         catch (nosuchwindowexception a){             a.printstacktrace();             return true;         }         catch (exception e) {             e.printstacktrace();             return false;         }         return ready;     }     @override     public string tostring() {         return string.format("timeout waiting documentnotactive script");     } });   bufferedwriter bw=new bufferedwriter(new filewriter(new file("c:\\abc.txt"))); bw.write(driver.getpagesource()); bw.close(); driver.quit(); 

i have reused code in wait.until() answer.my question why returning 16 elements? assume should return none or elements.is there limit on number of tags or document size?.what solution here?

try add

an implicit wait tell webdriver poll dom amount of time when trying find element or elements if not available. default setting 0. once set, implicit wait set life of webdriver object instance.

webdriver driver=new phantomjsdriver(caps); driver.manage().timeouts().implicitlywait(30, timeunit.seconds); 

Comments

Popular posts from this blog

Hatching array of circles in AutoCAD using c# -

ios - UITEXTFIELD InputView Uipicker not working in swift -