Próbuję skanować wiersze w tabeli HTML przy użyciu częściowej ścieżki href i wykonywać dalsze testy z wartościami innych kolumn tego wiersza.Jak uzyskać wiersz tabeli HTML przy użyciu Capybara
<div id = "blah">
<table>
<tr>
<td><a href="afile?key=HONDA">link</a></td>
<td>29 33 485</td>
<td>45.2934,00 EUR</td>
</tr>
<tr>
<td><a href="afile?key=HONDA">link</a></td>
<td>22 93 485</td>
<td>38.336.934,123 EUR</td>
</tr>
<tr>
<td><a href="afile?key=something_else">link</a></td>
<td>394 27 3844</td>
<td>3.485,2839 EUR</td>
</tr>
</table>
</div>
W definicji kroku ogórek-JVM, Wykonałem to dużo łatwo jak poniżej (jestem bardziej wygodne przy użyciu Ruby)
@Given("^if there are...$")
public void if_there_are...() throws Throwable {
...
...
baseTable = driver.findElement(By.id("blah"));
tblRows = baseTable.findElements(By.tagName("tr"));
for(WebElement row : tblRows) {
if (row.findElements(By.xpath(".//a[contains(@href,'key=HONDA')]")).size() > 0) {
List<WebElement> col = row.findElements(By.tagName("td"));
tblData dummyThing = new tblData();
dummyThing.col1 = col.get(0).getText();
dummyThing.col2 = col.get(1).getText();
dummyThing.col3 = col.get(2).getText();
dummyThing.col4 = col.get(3).getText();
dummyThings.add(dummyThing);
}
}
Jestem pojęcia tutaj
page.find('#blah').all('tr').each { |row|
# if row matches xpath then grab that complete row
# so that other column values can be verified
# I am clueless from here
row.find('td').each do { |c|
}
page.find('#blah').all('tr').find(:xpath, ".//a[contains(@href,'key=HONDA')]").each { |r|
#we got the row that matches xpath, let us do something
}
}
Hi Ko, jak mogę uzyskać href łącza, które dopasowuje xpath. Muszę sprawdzić kilka rzeczy za pomocą wartości kolumn zgodnego rzędu. Jak mogę uzyskać te pasujące kolumny (wartości)? – Bala
Możesz użyć zwykłych celowników do sprawdzenia tr. Dodano przykład. –
Otrzymuję komunikat Selenium "Element nie został znaleziony w pamięci podręcznej - być może strona zmieniła się od czasu, gdy została sprawdzona ...". Ale działa, jeśli po prostu 'puts tr.text' usuwa' tr.has_selector? ... '. – Bala