Selenium remote web driver connection implemented for docker image selenium/standalone-chrome. headless is false
This commit is contained in:
parent
c8069d902c
commit
60eb1c2dd5
@ -26,8 +26,9 @@ import org.openqa.selenium.OutputType;
|
|||||||
import org.openqa.selenium.TakesScreenshot;
|
import org.openqa.selenium.TakesScreenshot;
|
||||||
import org.openqa.selenium.WebDriver;
|
import org.openqa.selenium.WebDriver;
|
||||||
import org.openqa.selenium.WebDriverException;
|
import org.openqa.selenium.WebDriverException;
|
||||||
import org.openqa.selenium.chrome.ChromeDriver;
|
|
||||||
import org.openqa.selenium.chrome.ChromeOptions;
|
import org.openqa.selenium.chrome.ChromeOptions;
|
||||||
|
import org.openqa.selenium.remote.LocalFileDetector;
|
||||||
|
import org.openqa.selenium.remote.RemoteWebDriver;
|
||||||
import org.openqa.selenium.support.ui.ExpectedConditions;
|
import org.openqa.selenium.support.ui.ExpectedConditions;
|
||||||
import org.openqa.selenium.support.ui.WebDriverWait;
|
import org.openqa.selenium.support.ui.WebDriverWait;
|
||||||
import org.testng.annotations.AfterMethod;
|
import org.testng.annotations.AfterMethod;
|
||||||
@ -35,13 +36,14 @@ import org.testng.annotations.BeforeMethod;
|
|||||||
import org.testng.annotations.BeforeSuite;
|
import org.testng.annotations.BeforeSuite;
|
||||||
import org.testng.annotations.Listeners;
|
import org.testng.annotations.Listeners;
|
||||||
import org.thingsboard.server.common.data.Customer;
|
import org.thingsboard.server.common.data.Customer;
|
||||||
import org.thingsboard.server.common.data.StringUtils;
|
|
||||||
import org.thingsboard.server.common.data.page.PageLink;
|
import org.thingsboard.server.common.data.page.PageLink;
|
||||||
import org.thingsboard.server.common.data.rule.RuleChain;
|
import org.thingsboard.server.common.data.rule.RuleChain;
|
||||||
import org.thingsboard.server.msa.AbstractContainerTest;
|
import org.thingsboard.server.msa.AbstractContainerTest;
|
||||||
import org.thingsboard.server.msa.ui.listeners.TestListener;
|
import org.thingsboard.server.msa.ui.listeners.TestListener;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.net.MalformedURLException;
|
||||||
|
import java.net.URL;
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@ -53,35 +55,26 @@ abstract public class AbstractDriverBaseTest extends AbstractContainerTest {
|
|||||||
private final Dimension dimension = new Dimension(WIDTH, HEIGHT);
|
private final Dimension dimension = new Dimension(WIDTH, HEIGHT);
|
||||||
private static final int WIDTH = 1680;
|
private static final int WIDTH = 1680;
|
||||||
private static final int HEIGHT = 1050;
|
private static final int HEIGHT = 1050;
|
||||||
private static final boolean HEADLESS = true;
|
private static final boolean HEADLESS = false;
|
||||||
protected static final PageLink pageLink = new PageLink(10);
|
protected static final PageLink pageLink = new PageLink(10);
|
||||||
|
|
||||||
@BeforeSuite
|
@BeforeSuite
|
||||||
public void beforeUISuite() {
|
public void beforeUISuite() {
|
||||||
WebDriverManager.chromedriver().setup();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@BeforeMethod
|
@BeforeMethod
|
||||||
public void openBrowser() {
|
public void openBrowser() throws MalformedURLException {
|
||||||
log.info("*----------------------* Setup driver *----------------------*");
|
log.info("*----------------------* Setup driver *----------------------*");
|
||||||
ChromeOptions options = new ChromeOptions();
|
ChromeOptions options = new ChromeOptions();
|
||||||
|
options.setHeadless(HEADLESS);
|
||||||
|
options.setAcceptInsecureCerts(true);
|
||||||
|
|
||||||
// https://sites.google.com/a/chromium.org/chromedriver/capabilities#TOC-Using-a-Chrome-executable-in-a-non-standard-location
|
// requirement:
|
||||||
var chromeBinary = System.getProperty("chromeBinary");
|
// docker run --name=chrome --rm --network=host -p 4444:4444 -p 7900:7900 --shm-size="2g" -e SE_NODE_MAX_SESSIONS=8 -e SE_NODE_OVERRIDE_MAX_SESSIONS=true -e SE_NODE_SESSION_TIMEOUT=90 -e SE_SCREEN_WIDTH=1920 -e SE_SCREEN_HEIGHT=1080 -e SE_SCREEN_DEPTH=24 -e SE_SCREEN_DPI=74 selenium/standalone-chrome
|
||||||
if (StringUtils.isNotBlank(chromeBinary)) {
|
RemoteWebDriver remoteWebDriver = new RemoteWebDriver(new URL("http://localhost:4444"), options);
|
||||||
options.setBinary(chromeBinary);
|
remoteWebDriver.setFileDetector(new LocalFileDetector());
|
||||||
}
|
|
||||||
|
|
||||||
if (HEADLESS) {
|
driver = remoteWebDriver;
|
||||||
options.addArguments("--no-sandbox"); //have to be a very first option to not face DevToolsActivePort issue
|
|
||||||
options.addArguments("--headless");
|
|
||||||
options.addArguments("--disable-dev-shm-usage");
|
|
||||||
options.addArguments("--window-size=1920x1080");
|
|
||||||
}
|
|
||||||
|
|
||||||
options.addArguments("--ignore-certificate-errors");
|
|
||||||
|
|
||||||
driver = new ChromeDriver(options);
|
|
||||||
driver.manage().window().setSize(dimension);
|
driver.manage().window().setSize(dimension);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user