selenium在java的不同类中共用同一个driver

selenium在java的不同类中共用同一个driver

原因

   最近学习selenium,就打算自己写写,写的过程中发现一个问题,UI自动化页面大部分需要先登录才能进行后续操作。
   考虑到如果将所有的功能都写到一个类里面,代码过长,而且不容易维护;其次按照功能分块来写,每次都需要写登录那块代码,这样代码就冗余了;然后就选择了将登录作为父类,其他类直接继承父类就可以了。
   然后问题就来了,因为父类中的driver和子类中的driver不是一个,所以在子类中执行完登录后,子类中的driver会重新打开一个窗口。

解决方法

   开始百度了很多,一直没有用,还是不能实现。后面是在父类中将driver定义为一个常量,写一个返回driver的方法

		public static final WebDriver driver = getDriver();
	    public static WebDriver getDriver(){
	        File file = new File("C://driver/chromedriver.exe");
	        System.setProperty("webdriver.chrome.driver",file.getAbsolutePath());
	        WebDriver drivers = new ChromeDriver();
	        return drivers;
	    }

需要使用driver时,直接LoginPhone.driver。

下面给出部分代码

	public class LoginPhone {
	   
	    public static final WebDriver driver = getDriver();
	
	    public static WebDriver getDriver(){
	        File file = new File("C://driver/chromedriver.exe");
	        System.setProperty("webdriver.chrome.driver",file.getAbsolutePath());
	        WebDriver drivers = new ChromeDriver();
	        return drivers;
	    }
	
	    public static void LoginPhone(){
	        WebDriver driver=LoginPhone.driver;
	        driver.manage().window().maximize();
	        driver.get("http://www.baidu.com/");
	    }
}

子类

	public class PlatformFunction extends LoginPhone {
	    public static void main(String[] args){
	        LoginPhone();
	        LoginPhone.driver.findElement(By.xpath("/html/body/div[1]/div[2]/div/ul/li[1]/a")).click();
	    }
	}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值