Ich habe mehrere Tabellen und Location Value wird in einer anderen Indexreihenfolge angegeben. Wie kann ich den Standortwert erhalten, wenn die vorherige Zellenzeichenfolge "Ort" ist, wenn ich die Tabelle durchlaufe. Auf dem unteren Beispiel ist es Zellen [7], aber auf anderen Tabellen wird es 9. Wie kann ich Werte erhalten, nachdem Zellen innerer Text "Standort" ist? Grundsätzlich finde die Zelle "Location" den inneren Text der nächsten Zelle.
HTML-Tabelle:
<table class="tbfix FieldsTable"">
<tbody>
<tr>
<td class="name">Last Movement</td>
<td class="value">Port Exit</td>
</tr>
<tr>
<td class="name">Date</td>
<td class="value">26/06/2017 00:00:00</td>
</tr>
<tr>
<td class="name">From</td>
<td class="value">HAMBURGE</td>
</tr>
<tr>
<td class="name">Location</td>
<td class="value">EUROGATE HAMBURG</td>
</tr>
<tr>
<td class="name">E/F</td>
<td class="value">E</td>
</tr>
</tbody>
Controller Schleife durch:
foreach (var eachNode in driver.FindElements(By.XPath("//table[contains(descendant::*, 'Last Movement')]")))
{
var cells = eachNode.FindElements(By.XPath(".//td"));
cd = new Detail();
for (int i = 0; i < cells.Count(); i++)
{
cd.ActionType = cells[1].Text.Trim();
string s = cells[3].Text.Trim();
DateTime dt = Convert.ToDateTime(s);
if (_minDate > dt) _minDate = dt;
cd.ActionDate = dt;
}
}
In Ihrer foreach-Schleife können Sie dies verwenden:
var location = eachNode.FindElement(By.XPath(".//td[contains(text(),'Location')]/following-sibling::td));
Unter der Annahme, dass Ihre Daten immer so strukturiert sind, würde ich alle Tags durchlaufen und die Daten einem Wörterbuch hinzufügen.
Versuchen Sie etwas wie folgt:
Dictionary<string,string> tableData = new Dictionary<string, string>();
var trNodes = eachNode.FindElements(By.TagName("tr"));
foreach (var trNode in trNodes)
{
var name = trNode.FindElement(By.CssSelector(".name")).Text.Trim();
var value = trNode.FindElement(By.CssSelector(".value")).Text.Trim();
tableData.Add(name,value);
}
var location = tableData["location"];
Sie müssten die Validierung und Prüfungen für das Wörterbuch und die Struktur hinzufügen, aber das ist die allgemeine Idee.