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

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

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

 

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值