2013-05-31 8 views
15

über diesen Code i alle gewünschten Text extrahiert haben aus einem HTML-DokumentSelen - Get Elemente html eher Wert Text

private void RunThroughSearch(string url) 
{ 
    private IWebDriver driver; 
    driver = new FirefoxDriver(); 
    INavigation nav = driver.Navigate(); 
    nav.GoToUrl(url); 

    var div = driver.FindElement(By.Id("results")); 
    var element = driver.FindElements(By.ClassName("sa_wr")); 
} 

obwohl, wie ich brauche Ergebnisse der extrahierten Dokument verfeinern

Container 
    HEADER -> Title of a given block 
    Url -> Link to the relevant block 
    text -> body of a given block 
/Container 

als Sie können in meinem Code sehen, ich bin in der Lage, den Wert des Textes Teil als Text Wert, das war in Ordnung, aber was, wenn ich den Wert des Containers als HTML und nicht die extracte haben möchte d Text?

<div class="container"> 
    <div class="Header"> Title...</div> 
    <div class="Url"> www.example.co.il</div> 
    <div class="ResConent"> bla.. </div> 
</div> 

so ist der Behälter etwa 10-mal auf einer Seite i extrahieren müssen es innerhtml ist.

irgendwelche Ideen? (mit Selen)

Antwort

6

Suchen Sie das Element zuerst, dann verwenden Sie IJavaScriptExecutor, um die innere HTML zu erhalten.

var element = driver.FindElements(By.ClassName("sa_wr")); 
IJavaScriptExecutor js = driver as IJavaScriptExecutor; 
if (js != null) { 
    string innerHtml = (string)js.ExecuteScript("return arguments[0].innerHTML;", element); 
} 
31

Dies schien für mich zu arbeiten, und ist weniger Code:

var element = driver.FindElement(By.ClassName("sa_wr")); 
var innerHtml = element.GetAttribute("innerHTML"); 
+0

wenn ich diesen Fehler Pops verwenden Element zu sagen haben nicht "GetAttribute" -Attribut. Hilfe? – whamsicore

+0

Dieser arbeitet für mich –