通过配置文件或excel来读取元素定位方式和定位值

2021-03-26 17:42:21 浏览数 (1)

通过po的设计思想,我们在封装page页面元素时需要外部文件来管理元素定位方式和定位值。下面是两种定位的方式:

1.我们利用properties文件来管理,思路是在文本里编写key=value(定位方式 定位值),通过key获取对应的value,用任意符号却分隔获取定位方式和定位值。

element.properties文件部分内容element.properties文件部分内容

附:

ProUtil ProU=new ProUtil("element.properties");

public WebDriver driver;

static Logger logger=Logger.getLogger(BasePage.class);

ExeclUtil exclutil=new ExeclUtil();

public BasePage(WebDriver driver) {

this.driver=driver;

}

//显示等待查找元素方法

public WebElement GetElement(String key){

WebDriverWait wait = new WebDriverWait(driver,5);

WebElement Element = wait.until(ExpectedConditions.presenceOfElementLocated(this.GetByLocal(key)));

return Element;

}

//

public List<WebElement> GetElements(String key){

List<WebElement> Element= driver.findElements(this.GetByLocal(key));

return Element;

}

public List<WebElement> Getcontainstext(String key) {

List<WebElement> Element= driver.findElements(By.xpath("//div[contains(text(),'" ProU.GetPro(key) "')]"));

return Element;

}

public List<WebElement> Getcontainsclassname(String key) {

List<WebElement> Element=driver.findElements(By.className(ProU.GetPro(key)));

return Element;

}

//通过配置文件中的key值获取对应定位方式和定位值

public By GetByLocal(String key){

ProUtil ProU=new ProUtil("element.properties");

logger.info("你的定位信息的key为" key);

String Locator=ProU.GetPro(key);

String LocatorBy=Locator.split(">")[0];

String LocatorValue=Locator.split(">")[1];

logger.info("你的定位信息的方式为" LocatorBy);

logger.info("你的定位信息的值为" LocatorValue);

if(LocatorBy.equals("id")){

return By.id(LocatorValue);

}

else if (LocatorBy.equals("name")){

return By.name(LocatorValue);

}

else if (LocatorBy.equals("className")){

return By.className(LocatorValue);

}else if (LocatorBy.equals("linktext")){

return By.linkText(LocatorValue);

}else if (LocatorBy.equals("css")){

return By.cssSelector(LocatorValue);

}else if (LocatorBy.equals("tagname")){

return By.tagName(LocatorValue);

}

else if(LocatorBy.equals("xpath")){

return By.xpath(LocatorValue);

}else {

System.out.print("你选择的定位方式:[" LocatorBy "] 不被支持!");

return null;

}

}

}

2.第二种方法的思路就是在excel中写好相关的key,元素定位方式和定位值。然后使用poi去拿到表格内对应行的数据,通过对比key是否一样,来获取对应的定位方式和定位值。

读取表格代码如下:

public static String getLocatorBy(String file,String key) throws Exception {

File src = new File(file);

String LocatorBy = null;

// 加载文件

FileInputStream fis = new FileInputStream(src);

// 加载workbook

@SuppressWarnings("resource")

XSSFWorkbook wb=new XSSFWorkbook(fis);

//加载sheet,这里我们只有一个sheet,默认是sheet1

XSSFSheet sh1= wb.getSheetAt(0);

int row=sh1.getPhysicalNumberOfRows();

for(int i=1;i<row;i ) {

String value=sh1.getRow(i).getCell(1).getStringCellValue();

if(value.equals(key)) {

LocatorBy=sh1.getRow(i).getCell(2).getStringCellValue();

break;

}else {

}

}

return LocatorBy;

}

public static String getLocatorValue(String file,String key) throws Exception {

File src = new File(file);

String LocatorValue = null;

FileInputStream fis = new FileInputStream(src);

@SuppressWarnings("resource")

XSSFWorkbook wb=new XSSFWorkbook(fis);

XSSFSheet sh1= wb.getSheetAt(0);

int row=sh1.getPhysicalNumberOfRows();

for(int i=1;i<row;i ) {

String value=sh1.getRow(i).getCell(1).getStringCellValue();

if(value.equals(key)) {

LocatorValue=sh1.getRow(i).getCell(3).getStringCellValue();

break;

}else {

}

}

return LocatorValue;

}

定位代码如下:

public By GetByLocal(String key) throws Exception{

ExeclUtil exclutil=new ExeclUtil();

logger.info("你的定位信息的key为" key);

String LocatorBy=exclutil.getLocatorBy(key);

String LocatorValue=exclutil.getLocatorValue(key);

logger.info("你的定位信息的方式为" LocatorBy);

logger.info("你的定位信息的值为" LocatorValue);

if(LocatorBy.equals("id")){

return By.id(LocatorValue);

}

else if (LocatorBy.equals("name")){

return By.name(LocatorValue);

}

else if (LocatorBy.equals("className")){

return By.className(LocatorValue);

}else if (LocatorBy.equals("linktext")){

return By.linkText(LocatorValue);

}else if (LocatorBy.equals("css")){

return By.cssSelector(LocatorValue);

}else if (LocatorBy.equals("tagname")){

return By.tagName(LocatorValue);

}

else if(LocatorBy.equals("xpath")){

return By.xpath(LocatorValue);

}else {

System.out.print("你选择的定位方式:[" LocatorBy "] 不被支持!");

return null;

}

}

0 人点赞