java+selenium自动化-浏览器环境搭建代码优化

优化思路如下:

在web测试中,通常会进行浏览器兼容性的测试。而web自动化中提供了IE、Firefox和Chrome三种浏览器的驱动,下面详细讲述下如何将这三种浏览器的创建写在同一个方法中,并在自动化测试执行前执行该方法。

使用testng来进行测试用例的管理,在此处使用了@BeforeSuite注解和@Parameter注解,具体使用方法请自行学习。

将浏览器的选择写到一个方法中间,需要对浏览器类型、driver地址和selenium版本都进行判断,判断selenium版本是因为firefox,当2.x版本的selenium的时候不需要dirver,当3.x版本的selenium的时候浏览器和dirver需要保持一致性。

在类中做一个配置,使用testNG中的@Parameter注解,该注解可以写在testng的xml文件中,然后在使用的时候,将注解中的参数对应值(是一个数组)注入到方法中(形参,一一对应),在testng.xml文件中定义如下(此处文件也可以为Excel或者properties,需要进行解析后再传入方法中,此处不做说明)

 
  
  
  
  
  
  
  
  

如果需要更换浏览器的driver,请将driver的路径写在第二个标签内的value属性内

 优化代码如下:

@BeforeSuite
	@Parameters(value = { "browserType", "driverPath", "seleniumVersion" })
	public void beforeSuite(String browserType, String driverPath, String seleniumVersion) {

		// 小写的浏览器类型字符串 IE--》ie
		String browserTypeLowerCase = browserType.toLowerCase();
		logger.info("开始创建驱动");
		if (("ie").equals(browserTypeLowerCase)) {
			// IE
			// 1:驱动文件找不到的异常
			System.setProperty("webdriver.ie.driver", driverPath);
			// 创建一个设置对象,用来设置创建ie驱动时的各种设置
			DesiredCapabilities capabilities = new DesiredCapabilities();
			// 2:取消IE安全设置(忽略IE的Protected Mode的设置)
			capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
			// 3:忽略浏览器的页面缩放设置
			capabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true);
			// 4:设置一个初始化页面,防止window对象丢失
			capabilities.setCapability(InternetExplorerDriver.INITIAL_BROWSER_URL, "http://www.baidu.com");
			//创建一个ie驱动
			driver = new InternetExplorerDriver(capabilities);
			logger.info("创建IE驱动完成");
		}
		//做谷歌浏览器的测试
		else if (("chrome").equals(browserTypeLowerCase)) {
			//设置驱动
			System.setProperty("webdriver.chrome.driver", driverPath);
			//创建一个谷歌的webdriver驱动对象
			driver = new ChromeDriver();
			System.out.println("创建chrome驱动完成");
		} else if (("firefox").equals(browserTypeLowerCase)) {
			//火狐浏览器可执行文件的设置,因为不是安装在默认的路径下
			System.setProperty("webdriver.firefox.bin", "D:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");
			//如果selenium为3.x的版本,需要进行驱动文件设置
			if ("3.x".equals(seleniumVersion)) {
				// 3.x的selenium的驱动
			    System.setProperty("webdriver.gecko.driver", driverPath);
			}		
			//创建一个火狐的driver
			driver = new FirefoxDriver();
			System.out.println("创建火狐驱动完成");
		}
	}

 

你可能感兴趣的:(java自动化)