日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

selenium java po模式_selenium + java po模式

發布時間:2025/3/12 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 selenium java po模式_selenium + java po模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

po模式大概介紹,大家也可以自己百度看看

Page Object模式主要是將每個頁面設計為一個類class,這個類包含頁面中需要測試的元素(按鈕、輸入框、URL、標題等)和實際操作方法,這樣在寫測試用例時可以通過調用頁面類的方法和屬性來獲取頁面元素和操作元素,這樣優點是避免當頁面元素的ID或位置改變時需要更改測試用例代碼的情況。當頁面元組定位發生改變時只要通過更改頁面類的屬性即可。

框架目錄結構

loginPage.java

package com.lilysilk.page;

import org.apache.poi.util.SuppressForbidden;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.support.FindBy;

/**

* 定位語句與測試代碼封裝

* */

public class loginPage {

//登錄頁面

@FindBy(className="touXiang")

private WebElement uloginPage;

//用戶名輸入框

@FindBy(xpath="//div[@class='userLogin']/div[1]/input[@id='email']")

private WebElement uName;

//密碼輸入框

@FindBy(xpath="//div[@class='userLogin']/div[2]/input[@id='password']")

private WebElement uPwd;

//登錄按鈕

@FindBy(id="loginButton")

private WebElement loginBtn;

//點擊跳轉登錄頁面

public void goLoginPage() {

uloginPage.click();

}

//輸入用戶名

public void loginName(String username) {

System.out.println(username);

uName.clear();

uName.sendKeys(username);

}

//輸入密碼

public void loginPwd(String password) {

System.out.println(password);

uPwd.clear();

uPwd.sendKeys(password);

}

//點擊登錄

public void loginBtn() {

loginBtn.click();

}

}

case層即處理層

loginLilysilk_Po.java

package com.lilysilk.testcase;

import java.util.concurrent.TimeUnit;

import org.junit.*;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;

import org.openqa.selenium.chrome.ChromeOptions;

import org.openqa.selenium.firefox.FirefoxDriver;

import org.openqa.selenium.support.PageFactory;

import org.testng.annotations.AfterMethod;

import org.testng.annotations.BeforeMethod;

import com.lilysilk.page.loginPage;

import com.lilysilk.util.ExcelUtil;

public class loginLilysilk_Po {

public static WebDriver driver;

@Test

public void loginlily() throws Exception{

//定義測試用例路徑

String excelPath="E:\\javaDemo\\testProjectPo\\src\\com\\lilysilk\\data\\lilysilk.xlsx";

//讀取測試用例sheet頁

ExcelUtil.setExcelFile(excelPath,"login");

//打開瀏覽器

String BrowserName=ExcelUtil.getCellData(1,4);

//修改瀏覽器語言

ChromeOptions op=new ChromeOptions();

op.addArguments("--lang=en-US");

//equals比較時,要比較大小寫是否相同,equalsIgnoreCase,忽略了大小寫,ignore就是忽略的意思

if(BrowserName.equalsIgnoreCase("chrome")){

//初始化瀏覽器實例

driver=new ChromeDriver(op);

}else {

driver=new FirefoxDriver(op);

}

//瀏覽器最大化

driver.manage().window().maximize();

//打開網址

driver.get(ExcelUtil.getCellData(2, 4));

//初始化page頁面(注意:要放在打開瀏覽器之后)

loginPage loginPage=PageFactory.initElements(driver, loginPage.class);

loginPage.goLoginPage();

loginPage.loginName("112233@qq.com");

loginPage.loginPwd("112233@qq.com");

loginPage.loginBtn();

}

@BeforeMethod

public static void beforeMethod(){

}

@AfterMethod

public static void afterMethod(){

driver.close();

}

}

工具類

ExcelUtil.java

package com.lilysilk.util;

import java.io.FileInputStream;

import org.apache.poi.xssf.usermodel.XSSFCell;

import org.apache.poi.xssf.usermodel.XSSFSheet;

import org.apache.poi.xssf.usermodel.XSSFWorkbook;

/**

*

*@Comments : 導入導出Excel工具類

*此類事實現操作指定的excel文件中的指定sheet頁、

*讀取指定的單元格內容、獲取sheet中最后一行的行號的功能

*

*

**/

public class ExcelUtil {

private static XSSFSheet ExcelWSheet;

private static XSSFWorkbook ExcelWBook;//excel文件對象

private static XSSFCell ExcelCell;//單元格對象

//舍得需要操作的excel的文件路徑和sheet名稱

//在讀,寫excel文件時,均需先調用此方法,設定要操作的excel的路徑和sheet名稱

public static void setExcelFile(String Path,String SheetName) {

FileInputStream ExcelFile;

try {

//實例化excel文件的FileInputStream對象

ExcelFile=new FileInputStream(Path);

//實例化EXCEL文件的execlWXSSFWorkbook對象

ExcelWBook =new XSSFWorkbook(ExcelFile);

//實例化 XSSFCell 對象,指定excel文件中的sheet名稱,后續用于sheet中行、列和單元格的操作

ExcelWSheet=ExcelWBook.getSheet(SheetName);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

/**

* @param rowNum行 colNum列

**/

//讀取excel文件中指定的單元格的函數,此函數只支持擴展名為.xlsx的excel文件

public static String getCellData(int rowNum,int colNum)throws Exception {

try {

//通過函數參數知道單元格的行號與列號,獲取指定的單元格對象

ExcelCell=ExcelWSheet.getRow(rowNum).getCell(colNum);

//如果單元格的內容為字符串類型,則使用getStringCellValue方法來獲取單元格內容

//如果單元格的內容為數字類型, 則使用getNumericCellValue方法來獲取單元格內容

String CellData =ExcelCell.getCellType()==XSSFCell.CELL_TYPE_STRING?ExcelCell.getStringCellValue()+"":String.valueOf(Math.round(ExcelCell.getNumericCellValue()));

return CellData;

}

catch(Exception e){

e.printStackTrace();

//讀取遇到異常,則返回空字符串

return "錯了";

}

}

//獲取excel文件的最后一行的行號

public static int getLastRowNum() {

//函數返回sheet的最后一行行號

return ExcelWSheet.getLastRowNum();

}

}

data層即數據層

遇到的問題:

問題1:org.apache.poi.openxml4j.exceptions.OLE2NotOfficeXmlFileException: The supplied data appears to be in the OLE2 Format. You are calling the part of POI that deals with OOXML (Office Open XML) Documents. You need to call a different part of POI to process this data (eg HSSF instead of XSSF)

像這個報錯就是所用的XSSF是支持excel2007版本以上的,支持格式為xlsx,如果想要支持2003版本的xls,需要將XSSF換成HSSF的問題2:部分jar包沒有,需要導入,按照報錯內容導入jar包就好

總結

以上是生活随笔為你收集整理的selenium java po模式_selenium + java po模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。