web-dev-qa-db-ja.com

Seleniumを使用してテーブル内の特定の行を見つける方法は?

コードの例を次に示します。

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

したがって、productOrderContainerにあるこのテーブルには複数の列があり、いくつかの項目に応じて、すべてが複数の列を持つ複数の行があります。例は次のとおりです。

私がやりたいのは、例えばこのテーブルの最初の行を取得することです。 (行には次のようなidがあります:<td rowspan="1">)そして、たとえばこの行スパンで、特定の<div>の特定の値を探します

だから私が言いたいことは、擬似コードで:

テーブルを取得し、n行目を取得し、<div id='something'>の値を取得します

9
Koray Tugay

あなたは以下を試すことができます

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

テーブル行を反復処理して、必要な機能を実行することもできます。

35
Prashant Shukla

あなたが欲しい:

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

つまり、<DIV>は、rowNumberth <TR><TABLE>に含まれる<DIV> idが「productOrderContainer」で、そのテキスト値を取得します(これは、「<div id='something'> "

5
Ross Patterson

テーブルのセルにアクセスする場合

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

ネストされたテーブルセルにアクセスする場合-

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

詳細については、こちらをご覧ください チュートリアル

2
anuja jain

さっきまで、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();

見つかったWebElementインスタンス内にあることに注意してください。

上記はJavaコードです。driver変数がWebDriverの健全なインスタンスであると仮定しています。

2
Pavel Janicek

次のコードを使用すると、行/列番号を指定して、結果のセル値を取得できます。

WebDriver driver = new ChromeDriver();
WebElement base = driver.findElement(By.className("Table"));
tableRows = base.findElements(By.tagName("tr"));
List<WebElement> tableCols = tableRows.get([ROW_NUM]).findElements(By.tagName("td"));
String cellValue = tableCols.get([COL_NUM]).getText();
0
(.//*[table-locator])[n]

ここで、nは特定の行を表します。

0
Anoop Philip