javaのphantomjsを実行すると、私に頭痛を与えました。私がプログラムとgetpagesourceを実行すると、ul-> liテキストを抽出することができますが、SPANタグの中には含まれていません。これはマスキングや不正なCSSのためかもしれません。 JSスクリプトは角度があります。私はdriver.getPageSource(呼び出した後セレンのphantomjsスパンタグが表示されない
私の選択コンソール出力は)(通知プロパティ-アドレスが空である)である:
<div class="propertylist-property-details col-lg-6">
<a href="/property-detail/gblhrdlad152749">
<span class="property-name ng-binding" ng-bind="data.AddressLine1"></span>
<span class="property-address ng-binding" ng-bind="data.AddressLine2"></span>
</a>
<!-- ngIf: -->
<span class="property-bullets">
<ul>
<li>- Grade II listed facade </li>
<li>- Exposed concrete beams </li>
<li>- Italian kitchens </li>
<li>- Underfloor heating and comfort cooling </li>
<li>1054 Sq.Feet (97.92 Sq.Metres) </li>
</ul>
</span>
</div>
私のJavaコードは以下の通りです:
public static synchronized void testPhantomDriver() throws Exception {
DesiredCapabilities caps = new DesiredCapabilities();
caps.setJavascriptEnabled(true);
caps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, "C:\\location of \\phantomjs.exe");
String oldpage=""; String newpage="";
WebDriver driver = new PhantomJSDriver(caps);
try{
driver.get("http://search.savills.com/property-detail/gbcsrdlad140551#/r/list/property-for-sale%252Fengland%252Fbristol%252Fbristol%252Fbs1%252Fgbp");
WebElement menu = driver.findElement(By.xpath("//*[@id=\"ctl_GRS_PT_ND\"]")); // the trigger event element
Actions build = new Actions(driver); // ActionBuider
build.moveToElement(menu).build().perform(); // perform hover mouse over the needed element to triger visibility
build.click();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
String pageSource = driver.getPageSource();
driver.findElement(By.id("ViewAll")).click();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
System.out.println("clicked");
//driver = scrollToBottom(driver, 2000);
try{
System.out.println("waiting");
driver.wait(4000);
}catch(InterruptedException ie){
System.out.println("iexception: " + ie);
}
System.out.println(driver.getPageSource());
}catch(Exception exp){
System.out.println("exception:" + exp);
driver.close();
driver.quit();
}
driver.close();
driver.quit();
}
/**
* Main method
*/
public static void main(String[] args) {
try {
// run webdriver
testPhantomDriver();
} catch (Exception ex) {
System.out.println("exception");
}
}
私が持っているいくつかのソリューションあなたが助けてくれると思っていましたか? (1)iframe(2)としてロードするか、ページの読み込みが完了するまで待ちます。私はconnect(url).get()を使ってJsoupのページを読み込もうとしましたが、可視性は再び隠されています。
ご協力いただければ幸いです。