7

Oto przykładowy kod:Jak znaleźć określone wiersze w tabeli przy użyciu Selenium?

<div id="productOrderContainer"> 
<table class="table gradient myPage"> 

Więc ta tabela jest w productOrderContainer ma kilka kolumn i w zależności od kilku rzeczy będą mieć kilka wierszy, które mają kilka kolumn. Przykład:

Co chcę zrobić, to na przykład uzyskać pierwszy wiersz tej tabeli. (Wiersze mają id takich jak: <td rowspan="1">), a potem znowu na przykład w ten rowspan szukać określonej wartości w określonym <div>

Więc w psudo kodu, co chcę powiedzieć, to:

mnie z tabeli , dostać mi n'th wiersz, daj mi wartość w <div id='something'>

Odpowiedz

25

można spróbować następujących

int index = 0; 
WebElement baseTable = driver.findElement(By.className("table gradient myPage")); 
List<WebElement> tableRows = baseTable.findElements(By.tagName("tr")); 
tableRows.get(index).getText(); 

można również iteracyjne nad tablerows wykonać dowolną funkcję.

+0

+1 wygląda cool! –

+0

Dziękuję, spróbuję tego. –

+0

To wcale nie wygląda dobrze. 'WebDriver.findElement (By.className (" "))' zlokalizuje * każdy * element w dokumencie, a nie tabelę, której szuka OP. Zatem następna linia zbierze wszystkie '' s w całym dokumencie, a nie w określonej tabeli. –

2

Dobrze wcześniej, użyłem podejście, które można znaleźć wewnątrz WebElement:

WebElement baseTable = driver.findElement(By.tagName("table")); 
WebElement tableRow = baseTable.findElement(By.xpath("//tr[2]")); //should be the third row 
webElement cellIneed = tableRow.findElement(By.xpath("//td[2]:)); 
String valueIneed = cellIneed.getText(); 

Należy pamiętać, że znajdę wewnątrz znalezionego WebElement instancji.

Powyższe jest kod Java, przy założeniu, że driver zmienna jest zdrowa instancja WebDriver

+0

To nie zadziała tak, jak napisano, ponieważ 'WebElement.findElement (By.xpath (...)) interpretuje lokalizator XPath w kontekście dokumentu, a nie w kontekście elementu, tak jak w każdym innym' By.whatever() '. –

5

Chcecie:

int rowNumber=...; 
string value = driver.findElement(By.xpath("//div[@id='productOrderContainer']/table/tbody/tr[" + rowNumber +"]/div[id='something']")).getText(); 

Innymi słowy, znajdź <DIV> z identyfikatorem „coś” zawartego w rowNumber TH <TR> z <TABLE> zawartych w <DIV> z identyfikatorem "productOrderContainer", a następnie uzyskać jego wartość tekstową (co jest, jak sądzę, masz na myśli, "uzyskaj mi wartość w <div id='something'>"

0
(.//*[table-locator])[n] 

gdzie n reprezentuje konkretną linię.

1

jeśli chcesz uzyskać dostęp do komórki tabeli

WebElement thirdCell = driver.findElement(By.Xpath("//table/tbody/tr[2]/td[1]")); 

Jeśli chcesz uzyskać dostęp do zagnieżdżonego komórkę tabeli -

WebElement thirdCell = driver.findElement(By.Xpath("//table/tbody/tr[2]/td[2]"+//table/tbody/tr[1]/td[2])); 

Aby uzyskać więcej informacji odwiedź ten Tutorial

Powiązane problemy