コードの例を次に示します。
<div id="productOrderContainer">
<table class="table gradient myPage">
したがって、productOrderContainerにあるこのテーブルには複数の列があり、いくつかの項目に応じて、すべてが複数の列を持つ複数の行があります。例は次のとおりです。
私がやりたいのは、例えばこのテーブルの最初の行を取得することです。 (行には次のようなidがあります:<td rowspan="1">
)そして、たとえばこの行スパンで、特定の<div>
の特定の値を探します
だから私が言いたいことは、擬似コードで:
テーブルを取得し、n行目を取得し、<div id='something'>
の値を取得します
あなたは以下を試すことができます
int index = 0;
WebElement baseTable = driver.findElement(By.className("table gradient myPage"));
List<WebElement> tableRows = baseTable.findElements(By.tagName("tr"));
tableRows.get(index).getText();
テーブル行を反復処理して、必要な機能を実行することもできます。
あなたが欲しい:
int rowNumber=...;
string value = driver.findElement(By.xpath("//div[@id='productOrderContainer']/table/tbody/tr[" + rowNumber +"]/div[id='something']")).getText();
つまり、<DIV>
は、rowNumber
th <TR>
の<TABLE>
に含まれる<DIV>
idが「productOrderContainer」で、そのテキスト値を取得します(これは、「<div id='something'>
"
テーブルのセルにアクセスする場合
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]));
詳細については、こちらをご覧ください チュートリアル
さっきまで、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
の健全なインスタンスであると仮定しています。
次のコードを使用すると、行/列番号を指定して、結果のセル値を取得できます。
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();
(.//*[table-locator])[n]
ここで、n
は特定の行を表します。