ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

WebDriver高级应用实例(9)

2019-03-18 10:51:02  阅读:287  来源: 互联网

标签:WebDriver 表格 org 高级 WebElement 实例 table import public


  9.1封装操作表格的公用类

  目的:能够使自己编写操作表格的公用类,并基于公用类进行表格中的元素的各类操作

  被测网页的网址的HTML代码:

  

<html>
    <body>
        <table width="400" border="1" id="table">
            <tr>
                <td align="left"><p>第一行第一列</p><input type="text"></input></td>
                <td align="left"><p>第一行第二列</p><input type="text"></input></td>
                <td align="left"><p>第一行第三列</p><input type="text"></input></td>
            </tr>
            <tr>
                <td align="left"><p>第二行第一列</p><input type="text"></input></td>
                <td align="left"><p>第二行第二列</p><input type="text"></input></td>
                <td align="left"><p>第二行第三列</p><input type="text"></input></td>
            </tr>
            <tr>
                <td align="left"><p>第三行第一列</p><input type="text"></input></td>
                <td align="left"><p>第三行第二列</p><input type="text"></input></td>
                <td align="left"><p>第三行第三列</p><input type="text"></input></td>
            </tr>
        </table>
    </body>
</html>

  Java语言版本的API实例代码 

  Table类为封装了各种表格操作方法的公用类内容如下

package cn.table;
 
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebElement;
 
public class Table {
    // 声明一个WebEelment对象,用于存储页面的表格元素对象
    private WebElement _table;
 
    // 为构造函数传入页面表格元素对象参数,调用table的set_table方法,将页面表格元素复制给_table
    public Table(WebElement table) {
        set_table(table);
    }
    //获取页面表格的对象方法
    public WebElement get_table() {
        return _table;
    }
 
    public void set_table(WebElement _table) {
        this._table = _table;
    }
 
    // 返回表格的行数
    public int getRowCount() {
        List<WebElement> tableRow = _table.findElements(By.tagName("tr"));
        return tableRow.size();
    }
    //获取表格的列数
    public int getColumnCount() {
        List<WebElement> tableRows = _table.findElements(By.tagName("tr"));
        return tableRows.get(0).findElements(By.tagName("td")).size();
    }
 
    // 获取表格中某行某列的单元格对象
    public WebElement getCell(int rowNo, int colNo) {
        try {
            List<WebElement> tableRows = _table.findElements(By.tagName("tr"));
            System.out.println("行总数:" + tableRows.size());
            System.out.println("行号:" + rowNo);
 
            List<WebElement> tableColumns = tableRows.get(rowNo - 1).findElements(By.tagName("td"));
            System.out.println("列总数:" + tableColumns.size());
            System.out.println("列号:" + colNo);
 
            return tableColumns.get(colNo - 1);
        } catch (NoSuchElementException e) {
            // TODO: handle exception
            throw new NoSuchElementException("没有找到相关的元素");
        }
    }
 
    // 获取表格中某行某列的单元格中的某个页面元素对象,by参数用于定位某个表
    public WebElement getWebElementInCell(int rowNo, int colNo, By by) {
        try {
            List<WebElement> tableRows = _table.findElements(By.tagName("tr"));
            WebElement currentRow = tableRows.get(rowNo - 1);
            List<WebElement> tablecols = currentRow.findElements(By.tagName("td"));
            WebElement cell = tablecols.get(colNo - 1);
            return cell.findElement(by);
        } catch (NoSuchElementException e) {
            
            throw new NoSuchElementException("没有找到相关的元素");
        }
    }
}

测试类:调用封装的Table类进行基于表格元素的各类操作

package cn.table;

import org.testng.annotations.Test;
import org.testng.annotations.BeforeMethod;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.Assert;
import org.testng.annotations.AfterMethod;

public class testTable {
    WebDriver driver;
    String url = "file:///E:/%E6%9D%90%E6%96%99/selenium/table.html";
    @Test
    public void testTableDome() {
        WebElement webTable=driver.findElement(By.tagName("table"));
        Table table=new Table(webTable);
        WebElement cell=table.getCell(3, 2);
        Assert.assertEquals(cell.getText(), "第三行第二列");
        WebElement cellInut=table.getWebElementInCell(3, 2, By.tagName("input"));
        cellInut.sendKeys("第三行的第二列表格被找到");
        
    }
  @BeforeMethod
  public void beforeMethod() {
     System.setProperty("webdriver.chrome.driver",  "D:\\WebDriver\\chromedriver_win32\\chromedriver.exe");
     driver = new ChromeDriver();
     driver.manage().window().maximize();
     driver.navigate().to(url);
  }

  @AfterMethod
  public void afterMethod() {
      driver.quit();
  }

}

 

标签:WebDriver,表格,org,高级,WebElement,实例,table,import,public
来源: https://www.cnblogs.com/z-zzz/p/10550819.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有