2013-05-31 78 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

这个为我工作 –