selenium java 高级技巧篇(必学)找不到元素如何封装(十七)

package seleniumPage;

import org.apache.bcel.verifier.exc.StaticCodeConstraintException;
import org.apache.log4j.Logger;
import org.eclipse.jetty.util.statistic.SampleStatistic;
import org.openqa.selenium.By;

import org.openqa.selenium.By.ByPartialLinkText;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.os.ProcessUtils;

import seleniumUtil.ProUtil;

public class BasePage {
	public WebDriver driver;
	private static Logger logger = Logger.getLogger(BasePage.class);

	public BasePage(WebDriver driver) {
		this.driver = driver;
	}

	public WebElement getElement(String key) {
		boolean flag = true;
		WebElement element1 = null;
		int i = 1;
		while (flag) {
			try {
				element1 = driver.findElement(getByLocal(key));

			} catch (Exception e) {
				// TODO: handle exception
				try {
					Thread.sleep(3000);
				} catch (InterruptedException e1) {
					// TODO 自动生成的 catch 块
					e1.printStackTrace();
				}
				if (i == 10) {
					flag = false;
					logger.error("查找元素失败,找不到元素 : " + key);
					System.out.println("查找元素失败,找不到元素 : " + key);
				} else {
					i++;
				}
			}

		}
		return element1;
	}
public By getByLocal(String key) {
		ProUtil proUtil1 = new ProUtil("elements.properties");
		String locator = proUtil1.getPro(key);
		String locatorBy = locator.split(">")[0];
		String locatorValue = locator.split(">")[1];
		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("xpath")) {
			return By.xpath(locatorValue);
		} else if (locatorBy.equals("linkText")) {
			return By.linkText(locatorValue);
		} else if (locatorBy.equals("tagName")) {
			return By.tagName(locatorValue);
		} else if (locatorBy.equals("cssSelector")) {
			return By.cssSelector(locatorValue);
		} else if (locatorBy.equals("partialLinkText")) {
			return By.partialLinkText(locatorValue);
		} else {
			return null;
		}
	}

}

当我们找不到元素会抛异常时,按以上方式封装,则所有的页面都可以调用这个类,可以方便修改,有利于代码的维护性

在case里面可以设置超时方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值