0

JavaでSelenium Webdriverを使用しています。私はテーブルを持っていて、最初の行の最後のセルと最後の行の最後のセルを手に入れたいと思っています。私はそれらの1つを得ることができます

WebElement table =driver.findElement(By.className("dataTable"));
List <WebElement> rows = table.findElements(By.tagName("tr"));
WebElement firstrow= rows.get(0);
WebElement lastrow= rows.get(rivit.size()-1); 
List <WebElement> firstcells = firstrow.findElements(By.tagName("td"));
List <WebElement> lastcells = lastcell.findElements(By.tagName("td"));

firstcell.get(6).getText());

これは、td タグを 2 回検索しているためです。両方のセルをうまく取得する方法のヒントはありますか? 行またはセルに識別子がありません。

4

3 に答える 3

1

xpath を使用して要素を取得できます。

WebElement lastCellInFirstRow = driver.findElement(By.xpath("table[@class='dataTable']//tr[1]//td[last()]"));
WebElement lastCellInLastRow = driver.findElement(By.xpath("table[@class='dataTable']//tr[last()]//td[last()]"));

これがxpath の仕様です。ここで xpath で遊ぶことができます。

于 2012-09-12T07:34:59.997 に答える
0

cssSelectors を使用して作成を試みることができます。

String cssLast="table[class='dataTable']>tr:first-child>td:last-child"
String cssFirst="table[class='dataTable']>tr:last-child>td:last-child"

そのようになります。

driver.findElement(By.cssSelector(cssLast)).getText();
driver.findElement(By.cssSelector(cssFirst)).getText();

別のアプローチはjsを使用しています:

String getText(cssSel){
 JavascriptExecutor js = (JavascriptExecutor) driver;
        StringBuilder stringBuilder = new StringBuilder();

stringBuilder.append("var x = $(\""+cssSel+"\");");
        stringBuilder.append("return x.text().toString();")       ;


       String res= (String) js.executeScript(stringBuilder.toString());
}

text1=getText(cssLast);
text2=getText(csscssFirst);

ただし、要素を適切に配置していることを常に確認してください (例: firepath、firefox の firebug アドオンを使用) ここに画像の説明を入力

于 2012-09-12T08:48:41.697 に答える