几页后,在Gitlab CI \ CD运行器中运行selenium maven项目冻结或崩溃

时间:2020-03-04 14:29:39

标签: java maven selenium gitlab gitlab-ci-runner

我已将文件和项目上载到GitLab,并且尝试使用CI / CD运行器执行该文件和项目,但它始终冻结或崩溃。它在本地完美运行,但是当我将ChromeDriver更改为RemoteDriver时,它在第三页或第四页上开始崩溃。 我尝试过:

  • 添加ExplicitWait =>不起作用
  • 在没有它的情况下隐式删除Wait =>会在第一次测试中失败
  • 添加Thread.sleep(XXX)=>错误是页面被压碎
  • 仅添加一个测试=>在第5页上失败
  • 在第四页上再次添加try-catch =>失败

无效。我正在使用GitLab的免费版本。有谁知道解决方案,付费版本会帮助浏览器更快运行吗?

.gitlab-ci.yml:

before_script: 
  - "apt-get update"
  - "export DISPLAY=:1"
image: "docker:latest"
maven-build: 
  image: "maven:latest"
  script: "mvn test"
  stage: build
services: 
  - "docker:dind"
  - "selenium/standalone-chrome:latest"
stages: 
  - build
  - test

硒测试:

public class Base {
    public WebDriver driver;

    public WebDriver inializeDriver() throws IOException {

        String baseDir = new File(".").getPath();
        String path = "selenium-chrome-work/chromedriver";
        System.setProperty("webdriver.chrome.driver", path);

        ChromeOptions capabilities = new ChromeOptions();
        capabilities.setCapability("marionette", true);
        capabilities.setCapability("networkConnectionEnabled", true);
        capabilities.setCapability("browserConnectionEnabled", true);


        WebDriver driver = new RemoteWebDriver(
                new URL("http://selenium__standalone-chrome:4444/wd/hub/"),
                capabilities);


        String path1 = System.getProperty("user.dir");
        driver.get("file:///" + path1 + "\\seleniumproject\\story_html5.html?lms=1");

        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

        return driver;
    }
}


public class AppDemoTest extends Base {

    WebDriver driver;

    @BeforeTest
    public void BasePageNavigation() throws IOException, InterruptedException {
        // Initialize driver
        driver = inializeDriver();
    }

    @Test(priority = 1)
    public void pageOne()  {
        // Navigate to first page
        driver.findElement(By.className("cs-button")).click();
    }

    @Test(priority = 2)
    public void pageTwo()  { 
        // Navigate to second page
        driver.findElement(By.xpath("//*[@id='uniqueDomId-2906']")).click();
    }

    @Test(priority = 3)
    public void pageThree() { 
        // Check box, click OK and navigate to fourth page
        driver.findElements(By.cssSelector("[role='checkbox']")).get(0).click();
        driver.findElement(By.cssSelector("[data-commandset-id='204']")).click();
        driver.findElement(By.cssSelector("[data-commandset-id='213']")).click();
    }

    @Test(priority = 4)
    public void pageFour()  { 
        // Check box, click OK and navigate to fifth page
        driver.findElements(By.cssSelector("[role='checkbox']")).get(0).click();
        driver.findElement(By.cssSelector("[data-commandset-id='204']")).click();
        driver.findElement(By.cssSelector("[data-commandset-id='213']")).click();
    }
}

My .gitlab-ci.yml Error1 Error2

0 个答案:

没有答案