2017-01-09 2 views
1

Ich verwende Selemium mit Phantom JS Treiber, um eine HTML-Seite zu laden und alle HREF-Links daraus zu extrahieren. PhantomJS gibt mir absolute URLs nach der vollständigen Auflösung.Extract Relative Link mit Selenium mit Phantom JS-Treiber

Meine Anforderung ist es, relative Links wie es ist zu extrahieren.

Ich hole hrefs, indem ich das DOM gehe. Aber es gibt mir eine aufgelöste URL. Ich möchte relative URL wie es ist.

List<WebElement> list = driver.findElements(By.tagName("a")); 
for (WebElement element:list) { 
    String link = element.getAttribute("href");` 
} 

Zum Beispiel:

<a href="../index.html" ></a> with base url - http:docs.oracle.com/en/test.htm 

Phantom JS gibt mir gelöst Link - http: docs.oracle.com/index.htm Meine Forderung, wie unten den relativen Link. Relative link: "../index.htm"

Gibt es eine Möglichkeit in Selenium + Phantom JS dies zu erreichen?

Vielen Dank im Voraus. Neha

Antwort

0

Nach einigen Recherchen habe ich festgestellt, dass Selenium keine direkte Option bietet, um relative Links wie es ist zu erhalten. Ich habe einen Workaround gefunden, um die relative Verbindung zu erhalten. Wir bekommen Outerhtml mit

String outerHTML = element.getAttribute("outerHTML");

und dann DOMParser verwenden zu analysieren ans das href daraus zu extrahieren.