2013-05-31 24 views
15

Via rằng mã tôi đã chiết xuất tất cả các văn bản mong muốn ra khỏi một tài liệu htmlSelenium - Nhận yếu tố html chứ không phải văn bản Value

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

mặc dù như tôi cần phải tinh chỉnh kết quả của chiết xuất tài liệu

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

như u có thể nhìn thấy trong mã của tôi tôi có thể nhận được giá trị của phần văn bản như một giá trị văn bản, đó là tốt, nhưng nếu tôi muốn có giá trị của vùng chứa là HTML và không phải là trích xuất d văn bản?

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

vì vậy vùng chứa khoảng 10 lần trong một trang tôi cần trích xuất nó bên trongHtml.

bất kỳ ý tưởng nào? (sử dụng Selenium)

Trả lời

6

Tìm phần tử trước, sau đó sử dụng IJavaScriptExecutor để nhận HTML bên trong.

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

này dường như làm việc cho tôi, và ít mã:

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

khi tôi sử dụng lỗi này pops nói yếu tố không có "GetAttribute" thuộc tính. Cứu giúp? – whamsicore

+0

Cái này phù hợp với tôi –

Các vấn đề liên quan