表格的定位

表格的定位跟普遍元素的定位會有點差別涝焙,特此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的操作封裝成一個方法茴恰,以后就可以直接調(diào)用方法來做肃续,比較方便
構(gòu)造一個類WebTable乳愉,具體內(nèi)容如下:

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

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

//    獲取列數(shù)
    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;
}
}

創(chuàng)建一個測試類進行測試:

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")));
//        計算行數(shù)
        int rows = webTable.getRowCount();
        System.out.println(rows);
//        計算列數(shù)
        int cols = webTable.getColumnCount();
        System.out.println(cols);
//        點擊第二行第三列的第2個復(fù)選框
        webTable.getCellEditor(2,3,2).click();
        Thread.sleep(5000);

    }

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

}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末纺讲,一起剝皮案震驚了整個濱河市蕾总,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌粟焊,老刑警劉巖冤狡,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件孙蒙,死亡現(xiàn)場離奇詭異,居然都是意外死亡悲雳,警方通過查閱死者的電腦和手機挎峦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來怜奖,“玉大人浑测,你說我怎么就攤上這事⊥崃幔” “怎么了迁央?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長滥崩。 經(jīng)常有香客問我岖圈,道長,這世上最難降的妖魔是什么钙皮? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任蜂科,我火速辦了婚禮,結(jié)果婚禮上短条,老公的妹妹穿的比我還像新娘导匣。我一直安慰自己,他們只是感情好茸时,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布贡定。 她就那樣靜靜地躺著,像睡著了一般可都。 火紅的嫁衣襯著肌膚如雪缓待。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天渠牲,我揣著相機與錄音旋炒,去河邊找鬼。 笑死签杈,一個胖子當著我的面吹牛瘫镇,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播答姥,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼铣除,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了踢涌?” 一聲冷哼從身側(cè)響起通孽,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤序宦,失蹤者是張志新(化名)和其女友劉穎睁壁,沒想到半個月后背苦,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡潘明,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年行剂,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钳降。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡厚宰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出遂填,到底是詐尸還是另有隱情铲觉,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布吓坚,位于F島的核電站撵幽,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏礁击。R本人自食惡果不足惜盐杂,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望哆窿。 院中可真熱鬧链烈,春花似錦而克、人聲如沸胶滋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽奸晴。三九已至拇厢,卻和暖如春帆竹,著一層夾襖步出監(jiān)牢的瞬間合砂,已是汗流浹背目胡。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工锯七, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人誉己。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓眉尸,卻偏偏與公主長得像,于是被迫代替她去往敵國和親巨双。 傳聞我的和親對象是個殘疾皇子噪猾,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容