2013-05-31 13 views
15

Via tego kodu mam wydobytego cały żądany tekst z dokumentu htmlSelen - Get elementy html raczej wartość 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")); 
} 

choć jak muszę dopracować wyniki wyodrębnionym dokumencie

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

jako Możesz zobaczyć w moim kodzie, jestem w stanie uzyskać wartość tekstu część jako wartość tekstową, to było w porządku, ale co jeśli chcę mieć wartość pojemnika jako HTML, a nie ekstraktu d tekst?

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

więc zbiornik jest około 10 razy w stronę muszę wydobyć to InnerHTML.

jakieś pomysły? (przy użyciu Selenium)

Odpowiedz

6

Najpierw znajdź element, a następnie użyj IJavaScriptExecutor, aby uzyskać wewnętrzny kod HTML.

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

To wydawało się działać dla mnie, i jest mniej Kod:

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

kiedy używam ten błąd wyskakuje mówiąc elementu nie ma atrybutu „getAttribute”. Wsparcie? – whamsicore

+0

Ten działa dla mnie –

Powiązane problemy