Selenium - Получить элементы 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, а не извлеченный текст?

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

поэтому контейнер составляет около 10 раз на странице Мне нужно извлечь его innerHtml.

любые идеи? (с использованием селена)

Ответы

Ответ 1

Сначала найдите элемент, затем используйте 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);
}

Ответ 2

Казалось, это сработало для меня и меньше кода:

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