表格的定位

表格的定位跟普遍元素的定位會有點差別,特此mark下
測試的頁面代碼如下:

<html>
<head>
    <title>TableTest</title>
</head>
<body>
    <div>
    <table width="600" height="100" border="1" cellpadding="0" cellspacing="0" class="tb">
     <tr>
       <td>User Name</td>
       <td>E-mail</td>
       <td>Access</td>
     </tr>
      <tr>
       <td>test1</td>
       <td>
            <a href="test1@qq.com">test1@qq.com</a>
       </td>
       <td>
            <div>
                <label for="user128_admin">Admin</label>
                <input type="checkbox" id="user128_admin" checked="true"/>
                <label for="user128_cm">Content Manager</label>
                <input type="checkbox" id="user128_cm"/>
                <label for="user128_browser">Browser</label>
                <input type="checkbox" id="user128_browser"/>
            </div>
       </td>
     </tr>
      <tr>
       <td>test2</td>
       <td>
            <a href="test1@qq.com">test2@qq.com</a>
       </td>
       <td>
            <div>
                <label for="user128_admin">Admin</label>
                <input type="checkbox" id="user128_admin" checked="true"/>
                <label for="user128_cm">Content Manager</label>
                <input type="checkbox" id="user128_cm"/>
                <label for="user128_browser">Browser</label>
                <input type="checkbox" id="user128_browser"/>
            </div>
       </td>
     </tr>
    </table>
    </div>
</body>
</html>

1.定位表格中的行和列

    @Test
    public void tableTest() throws InterruptedException {

//        定位到整個表格
        WebElement table = driver.findElement(By.className("tb"));
//        獲取表格中的所有行
        List<WebElement> rows = table.findElements(By.tagName("tr"));
        Assert.assertEquals(3,rows.size());
        for (WebElement row : rows){
//            獲取某一行中的所有列
            List<WebElement> cols = row.findElements(By.tagName("td"));
            for (WebElement col:cols){
                System.out.print(col.getText()+" ");
            }
            System.out.println();
        }
    }

當然也可以直接利用xpath或是css直接定位到某個單元格

    @Test
    public void tableTest() throws InterruptedException {
        WebElement cell00 = driver.findElement(By.xpath("html/body/div[1]/table/tbody/tr[1]/td[1]"));
        System.out.print(cell00.getText());
    }

2.將處理table的操作封裝成一個方法,以后就可以直接調用方法來做,比較方便
構造一個類WebTable,具體內容如下:

package Table;

import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;

import java.util.List;

/**
 * Created by Administrator on 2016/12/16.
 */
public class WebTable {
    private WebElement webTable;

    public WebTable(WebElement webTable){
        setWebTable(webTable);
    }

    public WebElement getWebTable() {
        return webTable;
    }

    public void setWebTable(WebElement webTable) {
        this.webTable = webTable;
    }

//    獲取行數
    public int getRowCount(){
        List<WebElement> tableRows = webTable.findElements(By.tagName("tr"));
        return tableRows.size();
    }

//    獲取列數
    public int getColumnCount(){
        List<WebElement> tableRows = webTable.findElements(By.tagName("tr"));
        WebElement headerRow = tableRows.get(0);
        List<WebElement> tableCols = headerRow.findElements(By.tagName("td"));
        return tableCols.size();
    }

//    獲取某個單元格,單元格中有多個可編輯的地方
    public WebElement getCellEditor(int rowIdx, int colIdx, int editorIdx) {
        List<WebElement> tableRows = webTable.findElements(By.tagName("tr"));
        WebElement currentRow = tableRows.get(rowIdx - 1);
        List<WebElement> tableCols = currentRow.findElements(By.tagName("td"));
        WebElement cell = tableCols.get(colIdx - 1);
        WebElement cellEditor = cell.findElements(By.tagName("input")).get(editorIdx-1);
        return cellEditor;
    }

    //    獲取某個可以編輯的單元格
    public WebElement getCellEditor(int rowIdx, int colIdx) {
        List<WebElement> tableRows = webTable.findElements(By.tagName("tr"));
        WebElement currentRow = tableRows.get(rowIdx - 1);
        List<WebElement> tableCols = currentRow.findElements(By.tagName("td"));
        WebElement cell = tableCols.get(colIdx - 1);
        WebElement cellEditor = cell.findElements(By.tagName("input")).get(0);
        return cellEditor;
}
}

創建一個測試類進行測試:

package table;

import Table.WebTable;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

import java.util.List;

/**
 * Created by Administrator on 2016/12/15.
 */
public class TableTest {
    WebDriver driver;

    @BeforeClass
    public void openBrowser(){
        driver = new FirefoxDriver();
        driver.get("file:///C:/Users/Administrator/Desktop/tabletest.html");

    }

    @Test
    public void tableTest() throws InterruptedException {
        WebTable webTable = new WebTable(driver.findElement(By.className("tb")));
//        計算行數
        int rows = webTable.getRowCount();
        System.out.println(rows);
//        計算列數
        int cols = webTable.getColumnCount();
        System.out.println(cols);
//        點擊第二行第三列的第2個復選框
        webTable.getCellEditor(2,3,2).click();
        Thread.sleep(5000);

    }

    @AfterClass
    public void closeBrowser(){
        driver.quit();
    }

}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,431評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,637評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,555評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,900評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,629評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,976評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,976評論 3 448
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,139評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,686評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,411評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,641評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,129評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,820評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,233評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,567評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,362評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,604評論 2 380

推薦閱讀更多精彩內容