WebDriver高級應用實例(9)
阿新 • • 發佈:2019-03-18
keys current out new assert 表格 對象方法 util eth
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高級應用實例(9)