分布式调度框架。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

148 lines
4.4 KiB

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.dolphinscheduler.base;
import org.apache.dolphinscheduler.constant.TestConstant;
import org.apache.dolphinscheduler.util.PropertiesReader;
import org.openqa.selenium.PageLoadStrategy;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.CapabilityType;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
/**
* base driver class
*/
public class BaseDriver {
/**
* driver
*/
private static WebDriver driver;
/**
* chrome driver path
*/
private String chromeDriverPath;
/**
* implicitly wait time(s)
*/
private long implicitlyWait;
/**
* page load timeout(s)
*/
private long pageLoadTimeout;
/**
* script Timeout(s)
*/
private long setScriptTimeout;
/**
* Local thread storage is used to store the driver
*/
public static ThreadLocal<WebDriver> threadLocal = new ThreadLocal<>();
/**
*Initialization parameters
*/
public BaseDriver() throws IOException {
/* driver test class path */
chromeDriverPath = PropertiesReader.getKey("driver.chromeDriver");
/* wait time */
implicitlyWait = Long.valueOf(PropertiesReader.getKey("driver.timeouts.implicitlyWait"));
pageLoadTimeout = Long.valueOf(PropertiesReader.getKey("driver.timeouts.pageLoadTimeout"));
setScriptTimeout = Long.valueOf(PropertiesReader.getKey("driver.timeouts.setScriptTimeout"));
}
/**
* start chrome browser
*/
public void startBrowser() throws Exception {
System.out.println("===================test start===================");
// set chrome driver
System.setProperty("webdriver.chrome.driver", chromeDriverPath);
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setPageLoadStrategy(PageLoadStrategy.NONE);
chromeOptions.addArguments("--no-sandbox");
chromeOptions.addArguments("--disable-dev-shm-usage");
//Browser client running requires annotation --headless
chromeOptions.addArguments("--headless");
chromeOptions.addArguments("--disable-gpu");
chromeOptions.addArguments("--whitelisted-ips");
chromeOptions.addArguments("--disable-infobars");
chromeOptions.addArguments("--disable-browser-side-navigation");
driver = new ChromeDriver(chromeOptions);
/* driver setting wait time */
// implicitly wait time
driver.manage().timeouts().implicitlyWait(implicitlyWait, TimeUnit.SECONDS);
// page load timeout
driver.manage().timeouts().pageLoadTimeout(pageLoadTimeout, TimeUnit.SECONDS);
// script timeout
driver.manage().timeouts().setScriptTimeout(setScriptTimeout, TimeUnit.SECONDS);
// window maximize
driver.manage().window().maximize();
// set threadLocal
threadLocal.set(driver);
}
/**
* get webDriver
*
* @return driver
*/
public static WebDriver getDriver() {
return driver;
}
/**
* set webDriver
*
* @param driver driver
*/
public void setDriver(WebDriver driver) {
this.driver = driver;
// Thread local storage
threadLocal.set(driver);
}
/**
* close browser
*/
public void closeBrowser() throws InterruptedException {
Thread.sleep(TestConstant.THREE_THOUSAND);
if (driver != null) {
driver.quit();
System.out.println("===================test end===================");
}
}
}