ฉันใช้ไลบรารี Selenium ใน Java เพื่อทำลายไซต์ ฉันใช้ PhantomJsDriver เป็น webdriver ไซต์นี้มี URL บางส่วนอยู่ในแท็ก list(li) ที่ฉันสนใจ ปัญหาคือไซต์มีองค์ประกอบ 64 (li) แต่ ฉันได้รับองค์ประกอบเพียง 16 (li) นี่คือรหัสของฉัน:
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 for documentNotActive script");
}
});
BufferedWriter bw=new BufferedWriter(new FileWriter(new File("C:\\abc.txt")));
bw.write(driver.getPageSource());
bw.close();
driver.quit();
ฉันใช้โค้ดใน wait.until() ซ้ำจากคำตอบ คำถามของฉันคือเหตุใดจึงส่งคืนองค์ประกอบเพียง 16 รายการ ฉันคิดว่าไม่ควรส่งคืนองค์ประกอบใดเลยหรือทั้งหมด มีการจำกัดจำนวนแท็กหรือขนาดเอกสารหรือไม่ วิธีแก้ปัญหาที่นี่คืออะไร