2013-05-31 93 views
15

通過代碼我已經提取的所有所需的文本了html文檔硒 - 獲取元素HTML,而文本值

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")); 
} 

但正如我需要改進提取文件

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

的結果的你可以在我的代碼中看到我能夠獲得文本部分的值 作爲文本值,這很好,但如果我想 容器的值爲HTML而不是extracte d文字?

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

使集裝箱在 頁約10倍,我需要提取它的innerHTML。

有什麼想法? (使用硒)

回答

6

先找到元素,然後使用IJavaScriptExecutor獲取內部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

這似乎爲我工作,而且是更少的代碼:

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

當我使用這個錯誤彈出話說元素沒有「的getAttribute」屬性。幫幫我? – whamsicore

+0

這個爲我工作 –