Passare IwebElement nel pacchetto di agilità html C #

c# html-agility-pack selenium

Domanda

Ho dei problemi con questo:

Ho un codice HTML interno della mia azienda. In questa pagina, ho un tavolo. Voglio convertire la tabella HTML in DataTable in C #:

Ecco il mio codice:

IWebElement ie = driver.FindElement(By.XPath(".//*[@id='frmClaimSearch']/div[2]/div[1]/div/table"));

ie.GetAttribute("innerHTML");//get Element of the HTML
var doc = new HtmlDocument();

doc.Load("????");

var nodes = doc.DocumentNode.SelectNodes(".//*[@id='frmClaimSearch']/div[2]/div[1]/div/table/tr");
var table = new DataTable("MyTable");

var headers = nodes[0]
            .Elements("th")
            .Select(th => th.InnerText.Trim());
foreach (var header in headers)
{
    table.Columns.Add(header);
}
var rows = nodes.Skip(1).Select(tr => tr
            .Elements("td")
            .Select(td => td.InnerText.Trim())
            .ToArray());
foreach (var row in rows)
{
    table.Rows.Add(row);
}
@id='frmClaimSearch']/div[2]/div[1]/div/table/tr");
var table = new DataTable("MyTable is my XPath of Table.

Ma questi codici non funzionano. Ho provato tanto. Aiutami per favore. Grazie molto.

Risposta popolare

Utilizzare il metodo LoadHtml() anziché Load() per popolare HtmlDocument dalla stringa HTML:

IWebElement ie = driver.FindElement(By.XPath(".//*[@id='frmClaimSearch']/div[2]/div[1]/div/table"));

string innerHtml = ie.GetAttribute("innerHTML");
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(innerHTML);

.......


Related

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow