ChromeBrowser.java 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package jnpf.selenium.driver;
  2. import lombok.extern.slf4j.Slf4j;
  3. import org.openqa.selenium.chrome.ChromeDriver;
  4. import org.openqa.selenium.chrome.ChromeDriverService;
  5. import org.openqa.selenium.chrome.ChromeOptions;
  6. import org.springframework.util.Assert;
  7. import org.springframework.util.StringUtils;
  8. import java.util.function.Supplier;
  9. @Slf4j
  10. public class ChromeBrowser extends AbstractBrowser<ChromeDriver, ChromeDriverService, ChromeOptions> {
  11. public static Supplier<ChromeOptions> defaultDriverOptionsSupplier = () -> {
  12. System.setProperty(ChromeDriverService.CHROME_DRIVER_EXE_PROPERTY, getProperties().getDriverPath());
  13. ChromeOptions options = new ChromeOptions();
  14. //设置浏览器参数
  15. options.addArguments("--headless");
  16. options.addArguments("--disable-gpu");
  17. options.addArguments("--no-sandbox");
  18. options.addArguments("lang=zh_CN.UTF-8");
  19. options.addArguments("--disable-dev-shm-usage");
  20. //指定浏览器分辨率
  21. options.addArguments("window-size=1920x1080");
  22. //浏览器文件
  23. if (StringUtils.hasText(getProperties().getBrowserPath())) {
  24. options.setBinary(getProperties().getBrowserPath());
  25. }
  26. return options;
  27. };
  28. public static Supplier<ChromeDriverService> defaultDriverServiceSupplier = () -> null;
  29. @Override
  30. public ChromeOptions buildDriverOptions() {
  31. return defaultDriverOptionsSupplier.get();
  32. }
  33. @Override
  34. public ChromeDriverService buildDriverService() {
  35. return defaultDriverServiceSupplier.get();
  36. }
  37. @Override
  38. public ChromeDriver buildDriver(ChromeDriverService driverService, ChromeOptions driverOptions) {
  39. Assert.notNull(System.getProperty(ChromeDriverService.CHROME_DRIVER_EXE_PROPERTY), "未设置浏览器驱动路径");
  40. ChromeDriver driver;
  41. if (driverService != null && driverOptions != null) {
  42. driver = new ChromeDriver(driverService, driverOptions);
  43. } else if (driverOptions != null) {
  44. driver = new ChromeDriver(driverOptions);
  45. } else if (driverService != null) {
  46. driver = new ChromeDriver(driverService);
  47. } else {
  48. throw new IllegalArgumentException("service 或 options 不允许都为空");
  49. }
  50. return driver;
  51. }
  52. }