簡體   English   中英

Selenium WebDriver Java 定位兩個不同的表格單元格

[英]Selenium WebDriver Java locating two different table cells

我在 Java 中使用 Selenium Webdriver。 我有一張桌子,我喜歡把手放在第一行的最后一個單元格和最后一行的最后一個單元格上。 我設法得到其中之一

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-tags。 任何提示如何很好地獲得兩個細胞? 我的行或單元格中沒有標識符。

您可以使用 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。

您可以嘗試使用 cssSelectors 來實現:

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

它會像那樣 smt;

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);

但始終確保正確定位元素(例如,在 firefox 中使用 firepath、firebug 插件)在此處輸入圖片說明

TableDriver 擴展 ( https://github.com/jkindwall/TableDriver.Java ) 提供了一種非常干凈的方式來處理這樣的事情。 如果您的表格有標題,您可以(並且應該)通過標題文本識別單元格列,但如果您沒有標題,您仍然可以執行類似的操作。

Table table = Table.createWithNoHeaders(driver.findElement(By.className("dataTable")), 0);
WebElement firstRowLastCell = table.findCell(0, table.getColumnCount() - 1);
WebElement lastRowFirstCell = table.findCell(table.getRowCount() - 1, table.getColumnCount() - 1);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM