Время ожидания получения сообщения от средства визуализации: 10.000 при захвате скриншота с использованием chromedriver и chrome через Jenkins в Windows - PullRequest
8 голосов
/ 26 марта 2019

ОС: Windows 10 Браузер: Chrome Версия браузера: версия 73.0.3683.86 (официальная сборка) (32-разрядная версия)

Я работаю над проектом BDD с селеным огурцом, где проверяю заголовок одной страницы. Я использую экстент-отчет версии 4. Проект успешно запущен в локальной сети. Но когда я запускаю его через Jenkins, происходит сбой при захвате скриншота и отображении ошибки ниже.

Если я удаляю плагин для серфинга из pom.xml, тогда ТЕСТ не запускается через Дженкинс.

В опции «Выполнить пакетную команду Windows» Дженкинса я дал команду ниже

C:\Program Files (x86)\Jenkins\workspace\CucumberBDDFramework
mvn test

TestRunner

    package com.accenture.TestRunner;

    import org.testng.annotations.AfterClass;
    import org.testng.annotations.Test;
    import org.testng.annotations.BeforeClass;
    import org.testng.annotations.AfterClass;
    import org.testng.annotations.BeforeClass;
    import org.testng.annotations.DataProvider;
    import org.testng.annotations.Test;

    import cucumber.api.CucumberOptions;
    import cucumber.api.testng.AbstractTestNGCucumberTests;
    import cucumber.api.testng.CucumberFeatureWrapper;
    import cucumber.api.testng.TestNGCucumberRunner;


    /**
     * @author ajinkya.pande
     *
     */

    @CucumberOptions(
            features="./features/WhatIsBitcoin.feature",
            glue= {"com.accenture.StepDef"},
            tags= {"@ExtentReport"}, 
            dryRun = false
            )

    public class TestRunner {

        // Write following steps or Try to extend AbstractTestNGCucumberTests

        private TestNGCucumberRunner testNGCucumberRunner;

        @BeforeClass(alwaysRun = true)
        public void setUpClass() throws Exception{ 
            testNGCucumberRunner = new TestNGCucumberRunner(this.getClass());
        }

        @Test(dataProvider = "features")
        public void feature(CucumberFeatureWrapper cucumberFeature) {
            testNGCucumberRunner.runCucumber(cucumberFeature.getCucumberFeature());
        }

        @DataProvider
        public Object [][] features(){
            return testNGCucumberRunner.provideFeatures();
        }


        @AfterClass(alwaysRun = true)
        public void tearDownClass() throws Exception{
            testNGCucumberRunner.finish();
        }

    }

StepDefinition

    package com.accenture.listeners;

    import java.io.File;
    import java.io.IOException;
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Date;

    import org.apache.commons.io.FileUtils;
    import org.openqa.selenium.OutputType;
    import org.openqa.selenium.TakesScreenshot;
    import org.openqa.selenium.WebDriver;

    import com.accenture.Utility.Constants;
    import com.aventstack.extentreports.ExtentReports;
    import com.aventstack.extentreports.ExtentTest;
    import com.aventstack.extentreports.markuputils.ExtentColor;
    import com.aventstack.extentreports.markuputils.MarkupHelper;
    import com.aventstack.extentreports.reporter.ExtentHtmlReporter;
    import com.aventstack.extentreports.reporter.configuration.Theme;

    /**
     * @author ajinkya.pande
     *
     */

    public class ExtentReportListener extends Constants {

        public static ExtentHtmlReporter report = null;
        public static ExtentReports extent = null;
        public static ExtentTest test = null;

        public static ExtentReports setUp() {
            String reportLocation = "./Reports/Extent_Report.html";
            report = new ExtentHtmlReporter(reportLocation);
            report.config().setDocumentTitle("Automation Test Report");
            report.config().setReportName("Automation Test Report");
            report.config().setTheme(Theme.STANDARD);
            System.out.println("Extent Report location initialized . . .");
            report.start();

            extent = new ExtentReports();
            extent.attachReporter(report);
            extent.setSystemInfo("Application", "Youtube");
            extent.setSystemInfo("Operating System", System.getProperty("os.name"));
            extent.setSystemInfo("User Name", System.getProperty("user.name"));
            System.out.println("System Info. set in Extent Report");
            return extent;
        }

        public static void testStepHandle(String teststatus, WebDriver driver, ExtentTest extenttest, Throwable throwable) {
            if (teststatus.equals("FAIL")) {

                extenttest.fail(MarkupHelper.createLabel("Test Case is Failed : ", ExtentColor.RED));
                extenttest.error(throwable.fillInStackTrace());

                try {
                    extenttest.addScreenCaptureFromPath(captureScreenShot(driver));
                } catch (IOException e) {
                    e.printStackTrace();
                }

                if (driver != null) {
                    driver.quit();
                }

                if (teststatus.equals("PASS")) {
                    extenttest.pass(MarkupHelper.createLabel("Test Case is Passed : ", ExtentColor.GREEN));
                    try {
                        extenttest.addScreenCaptureFromPath(captureScreenShot(driver));
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }

            }
        }

        public static String captureScreenShot(WebDriver driver) throws IOException {
            TakesScreenshot screen = (TakesScreenshot) driver;
            File src = screen.getScreenshotAs(OutputType.FILE);
            String dest = SCRRENSHOT_PATH + getcurrentdateandtime() + ".png";
            File target = new File(dest);
            FileUtils.copyFile(src, target);
            return dest;
        }

        private static String getcurrentdateandtime() {
            String str = null;
            try {
                DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss:SSS");
                Date date = new Date();
                str = dateFormat.format(date);
                str = str.replace(" ", "").replaceAll("/", "").replaceAll(":", "");
            } catch (Exception e) {
            }
            return str;
        }

    }

pom.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>org.ajinkya.cucumber</groupId>
      <artifactId>extent-reporting</artifactId>
      <version>0.0.1-SNAPSHOT</version>



       <build>
        <plugins>


    <!--       <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-compiler-plugin</artifactId>
             <version>3.7.0</version>
            <configuration>
              <source>1.8</source>
              <target>1.8</target>
              <encoding>UTF-8</encoding>
            </configuration>
          </plugin> -->


          <plugin>
             <artifactId>maven-compiler-plugin</artifactId>
             <version>3.1</version>
            <configuration>
              <fork>1.7</fork>
              <executable>C:\Program Files\Java\jdk1.8.0_191\bin\javac.exe</executable>
            </configuration>
          </plugin>


       <!--    <plugin>
        <groupId>net.masterthought</groupId>
        <artifactId>maven-cucumber-reporting</artifactId>
        <version>3.15.0</version>
        <executions>
            <execution>
                <id>execute</id>
                <phase>verify</phase>
                <goals>
                    <goal>generate</goal>
                </goals>
                <configuration>
                    <outputDirectory>target/cucumber-reports/advanced-reports</outputDirectory>
                    <cucumberOutput>target/cucumber-reports/CucumberTestReport.json</cucumberOutput>
                </configuration>
            </execution>            
        </executions>
          </plugin> -->


           <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-surefire-plugin</artifactId>
              <version>2.19.1</version>
              <configuration>
                <suiteXmlFiles>testng.xml</suiteXmlFiles>
              </configuration>
            </plugin>


        </plugins>
      </build>












      <dependencies>

      <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.11.0</version>
    </dependency>



      <dependency>
    <groupId>info.cukes</groupId>
    <artifactId>cucumber-java</artifactId>
    <version>1.2.5</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/info.cukes/cucumber-testng -->
    <dependency>
    <groupId>info.cukes</groupId>
    <artifactId>cucumber-testng</artifactId>
    <version>1.2.5</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.testng/testng -->
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>6.9.8</version>
    </dependency>


      <dependency>
    <groupId>info.cukes</groupId>
    <artifactId>cucumber-jvm-deps</artifactId>
    <version>1.0.5</version>
    <scope>provided</scope>
    </dependency>

    <dependency>
    <groupId>com.aventstack</groupId>
    <artifactId>extentreports</artifactId>
    <version>4.0.6</version>
    </dependency>

    <dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.23</version>
    </dependency>

      <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-io -->
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-io</artifactId>
        <version>1.3.2</version>
    </dependency>


      </dependencies>



    </project>

Jenkins Log:


     T E S T S
    -------------------------------------------------------
    Running TestSuite
    Starting...............
    Extent Report location initialized . . .
    System Info. set in Extent Report
    Starting ChromeDriver 73.0.3683.68 (47787ec04b6e38e22703e856e101e840b65afe72) on port 8950
    Only local connections are allowed.
    Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
    Mar 26, 2019 11:15:27 PM org.openqa.selenium.remote.ProtocolHandshake createSession
    INFO: Detected dialect: OSS
    [1553622354.306][SEVERE]: Timed out receiving message from renderer: 10.000
    [1553622354.307][WARNING]: screenshot failed, retrying
    [1553622364.313][SEVERE]: Timed out receiving message from renderer: 9.996
    [1553622374.336][SEVERE]: Timed out receiving message from renderer: 9.998
    [1553622374.337][WARNING]: screenshot failed, retrying
    [1553622384.337][SEVERE]: Timed out receiving message from renderer: 9.998
    [1553622394.343][SEVERE]: Timed out receiving message from renderer: 10.000
    [1553622394.344][WARNING]: screenshot failed, retrying
    [1553622404.345][SEVERE]: Timed out receiving message from renderer: 9.996

    Failed scenarios:
    ./features/WhatIsBitcoin.feature:3 # Scenario: Testing extent reports

    1 Scenarios (1 failed)
    4 Steps (1 failed, 3 skipped)
    1m25.069s

    org.openqa.selenium.TimeoutException: timeout: Timed out receiving message from renderer: 9.996
      (Session info: chrome=73.0.3683.86)
      (Driver info: chromedriver=73.0.3683.68 (47787ec04b6e38e22703e856e101e840b65afe72),platform=Windows NT 10.0.17134 x86_64) (WARNING: The server did not provide any stacktrace information)
    Command duration or timeout: 0 milliseconds
    Build info: version: '3.11.0', revision: 'e59cfb3', time: '2018-03-11T20:26:55.152Z'
    System info: host: 'BDC11-L-FYK3VP2', ip: '192.168.56.1', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_191'
    Driver info: org.openqa.selenium.chrome.ChromeDriver
    Capabilities {acceptInsecureCerts: false, acceptSslCerts: false, applicationCacheEnabled: false, browserConnectionEnabled: false, browserName: chrome, chrome: {chromedriverVersion: 73.0.3683.68 (47787ec04b6e3..., userDataDir: C:\windows\TEMP\scoped_dir1...}, cssSelectorsEnabled: true, databaseEnabled: false, goog:chromeOptions: {debuggerAddress: localhost:51833}, handlesAlerts: true, hasTouchScreen: false, javascriptEnabled: true, locationContextEnabled: true, mobileEmulationEnabled: false, nativeEvents: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: XP, platformName: XP, proxy: Proxy(), rotatable: false, setWindowRect: true, strictFileInteractability: false, takesHeapSnapshot: true, takesScreenshot: true, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unexpectedAlertBehaviour: ignore, unhandledPromptBehavior: ignore, version: 73.0.3683.86, webStorageEnabled: true}
    Session ID: 1b4d8402a8e29651ed2c7a773c11ca37
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
        at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
        at org.openqa.selenium.remote.http.JsonHttpResponseCodec.reconstructValue(JsonHttpResponseCodec.java:40)
        at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:80)
        at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:44)
        at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
        at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:545)
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:602)
        at org.openqa.selenium.remote.RemoteWebDriver.getScreenshotAs(RemoteWebDriver.java:291)
        at com.accenture.listeners.ExtentReportListener.captureScreenShot(ExtentReportListener.java:81)
        at com.accenture.StepDef.WhatIsBitcoin.go_to_chrome(WhatIsBitcoin.java:47)
        at ?.When Go to chrome(./features/WhatIsBitcoin.feature:4)

    Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 86.657 sec <<< FAILURE! - in TestSuite
    feature(com.accenture.TestRunner.TestRunner)  Time elapsed: 85.109 sec  <<< FAILURE!
    cucumber.runtime.CucumberException: 
    org.openqa.selenium.TimeoutException: timeout: Timed out receiving message from renderer: 9.996
      (Session info: chrome=73.0.3683.86)
      (Driver info: chromedriver=73.0.3683.68 (47787ec04b6e38e22703e856e101e840b65afe72),platform=Windows NT 10.0.17134 x86_64) (WARNING: The server did not provide any stacktrace information)
    Command duration or timeout: 0 milliseconds
    Build info: version: '3.11.0', revision: 'e59cfb3', time: '2018-03-11T20:26:55.152Z'
    System info: host: 'BDC11-L-FYK3VP2', ip: '192.168.56.1', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_191'
    Driver info: org.openqa.selenium.chrome.ChromeDriver
    Capabilities {acceptInsecureCerts: false, acceptSslCerts: false, applicationCacheEnabled: false, browserConnectionEnabled: false, browserName: chrome, chrome: {chromedriverVersion: 73.0.3683.68 (47787ec04b6e3..., userDataDir: C:\windows\TEMP\scoped_dir1...}, cssSelectorsEnabled: true, databaseEnabled: false, goog:chromeOptions: {debuggerAddress: localhost:51833}, handlesAlerts: true, hasTouchScreen: false, javascriptEnabled: true, locationContextEnabled: true, mobileEmulationEnabled: false, nativeEvents: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: XP, platformName: XP, proxy: Proxy(), rotatable: false, setWindowRect: true, strictFileInteractability: false, takesHeapSnapshot: true, takesScreenshot: true, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unexpectedAlertBehaviour: ignore, unhandledPromptBehavior: ignore, version: 73.0.3683.86, webStorageEnabled: true}
    Session ID: 1b4d8402a8e29651ed2c7a773c11ca37
        at com.accenture.TestRunner.TestRunner.feature(TestRunner.java:42)
    Caused by: org.openqa.selenium.TimeoutException: 
    timeout: Timed out receiving message from renderer: 9.996
      (Session info: chrome=73.0.3683.86)
      (Driver info: chromedriver=73.0.3683.68 (47787ec04b6e38e22703e856e101e840b65afe72),platform=Windows NT 10.0.17134 x86_64) (WARNING: The server did not provide any stacktrace information)
    Command duration or timeout: 0 milliseconds
    Build info: version: '3.11.0', revision: 'e59cfb3', time: '2018-03-11T20:26:55.152Z'
    System info: host: 'BDC11-L-FYK3VP2', ip: '192.168.56.1', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_191'
    Driver info: org.openqa.selenium.chrome.ChromeDriver
    Capabilities {acceptInsecureCerts: false, acceptSslCerts: false, applicationCacheEnabled: false, browserConnectionEnabled: false, browserName: chrome, chrome: {chromedriverVersion: 73.0.3683.68 (47787ec04b6e3..., userDataDir: C:\windows\TEMP\scoped_dir1...}, cssSelectorsEnabled: true, databaseEnabled: false, goog:chromeOptions: {debuggerAddress: localhost:51833}, handlesAlerts: true, hasTouchScreen: false, javascriptEnabled: true, locationContextEnabled: true, mobileEmulationEnabled: false, nativeEvents: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: XP, platformName: XP, proxy: Proxy(), rotatable: false, setWindowRect: true, strictFileInteractability: false, takesHeapSnapshot: true, takesScreenshot: true, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unexpectedAlertBehaviour: ignore, unhandledPromptBehavior: ignore, version: 73.0.3683.86, webStorageEnabled: true}
    Session ID: 1b4d8402a8e29651ed2c7a773c11ca37


    Results :

    Failed tests: 
      TestRunner.feature:42 » Cucumber org.openqa.selenium.TimeoutException: timeout...

    Tests run: 1, Failures: 1, Errors: 0, Skipped: 0

    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  01:33 min
    [INFO] Finished at: 2019-03-26T23:16:45+05:30
    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test (default-test) on project extent-reporting: There are test failures.
    [ERROR] 
    [ERROR] Please refer to C:\Program Files (x86)\Jenkins\workspace\CucumberBDDFramework\target\surefire-reports for the individual test results.
    [ERROR] -> [Help 1]
    [ERROR] 
    [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
    [ERROR] Re-run Maven using the -X switch to enable full debug logging.
    [ERROR] 
    [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
    Build step 'Execute Windows batch command' marked build as failure
    Finished: FAILURE

Ответы [ 3 ]

9 голосов
/ 27 марта 2019

Кажется, вы используете chromedriver = 73.0.3683.68 и хром = 73.0.3683.86 на ОС Windows

Джон Чен (Владелец -chromedriver) недавно подтвердили, что:

Мы подтвердили проблемы с снимком экрана, когда Chrome 73.0.3686.75 запускается службой (такой как Jenkins или планировщик задач) в Windows.Пожалуйста, смотрите https://crbug.com/942023 для более подробной информации.Мы приносим извинения за любые неудобства, вызванные этим.

Тем не менее, мы еще не смогли наблюдать подобную проблему в Linux, поэтому мы ценим любую помощь, которую вы можете предоставить, чтобы позволить нам воспроизвести проблему в Linux.У нас нет доступа к TeamCity, но мы протестировали снимок экрана с использованием изображения Docker, созданного Selenium (селен / автономный хром: 3.141.59-литий), и не обнаружили никаких проблем.

chromedriver73


Обновление

Нам удалось выявить основную проблему.Основная проблема не в ChromeDriver v73.x как таковом, а в Chrome v73.x , и Джон официально подтверждает это как:

Основная причинадействительно в Chrome 73.x, а не в ChromeDriver.Мы работаем с разработчиками Chrome, чтобы найти решение.

chrome73_issue


Решение

Решение было бы:

Примечание. Если выиспользуете Chrome версии 72, пожалуйста, скачайте ChromeDriver 2.46 или ChromeDriver 72.0.3626.69


Outro


Обновление (03 апреля-2019)

Добавление аргумента --disable-features=VizDisplayCompositor через экземпляр ChromeOptions(), кажется, решает проблему:

ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-features=VizDisplayCompositor");
WebDriver driver = new ChromeDriver(options);
driver.get("https://google.com");
0 голосов
/ 04 июля 2019

У меня та же проблема в Linux / Ubuntu со следующими версиями:

  • Watir Версия: 6.16.5
  • Версия браузера: Chrome 75.0.3770.100
  • Версия драйвера браузера: 75.0.3770.90
  • Версия ОС: Ubuntu 16.04 LTS

Сообщение об ошибке:

#0 0x557d043886e9 <unknown>: timeout: Timed out receiving message from renderer: 9,999 (Selenium::WebDriver::Error::TimeoutError)
  (Session info: chrome=75.0.3770.100)
    from /var/lib/gems/2.3.0/gems/selenium-webdriver-3.142.3/lib/selenium/webdriver/remote/response.rb:72:in `assert_ok'
    from /var/lib/gems/2.3.0/gems/selenium-webdriver-3.142.3/lib/selenium/webdriver/remote/response.rb:34:in `initialize'
    from /var/lib/gems/2.3.0/gems/selenium-webdriver-3.142.3/lib/selenium/webdriver/remote/http/common.rb:88:in `new'
    from /var/lib/gems/2.3.0/gems/selenium-webdriver-3.142.3/lib/selenium/webdriver/remote/http/common.rb:88:in `create_response'
    from /var/lib/gems/2.3.0/gems/selenium-webdriver-3.142.3/lib/selenium/webdriver/remote/http/default.rb:114:in `request'
    from /var/lib/gems/2.3.0/gems/selenium-webdriver-3.142.3/lib/selenium/webdriver/remote/http/common.rb:64:in `call'
    from /var/lib/gems/2.3.0/gems/selenium-webdriver-3.142.3/lib/selenium/webdriver/remote/bridge.rb:167:in `execute'
    from /var/lib/gems/2.3.0/gems/selenium-webdriver-3.142.3/lib/selenium/webdriver/remote/w3c/bridge.rb:567:in `execute'
    from /var/lib/gems/2.3.0/gems/selenium-webdriver-3.142.3/lib/selenium/webdriver/remote/w3c/bridge.rb:229:in `screenshot'
    from /var/lib/gems/2.3.0/gems/selenium-webdriver-3.142.3/lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb:56:in `screenshot_as'
    from /var/lib/gems/2.3.0/gems/selenium-webdriver-3.142.3/lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb:40:in `block in save_screenshot'
    from /var/lib/gems/2.3.0/gems/selenium-webdriver-3.142.3/lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb:40:in `open'
    from /var/lib/gems/2.3.0/gems/selenium-webdriver-3.142.3/lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb:40:in `save_screenshot'
    from /var/lib/gems/2.3.0/gems/watir-6.16.5/lib/watir/screenshot.rb:24:in `save'
    from test.rb:5:in `<main>'

Пример кода:

require "rubygems"
require "watir"
browser = Watir::Browser.new :chrome
browser.goto 'http://watir.com/'
browser.screenshot.save 'screenshot.png'

Спасибо за помощь!

0 голосов
/ 27 марта 2019

У меня была такая же проблема при запуске той же версии Chrome / Chromedriver при запуске без сборки из сборки Team City. Это началось после того, как 25 марта 2019 года на сервере сборки было установлено последнее обновление.

Причина, по которой скриншоты были сделаны в первую очередь, заключалась в том, что тесты такженачал работать сбой из-за того, что я подозреваю, что это связано с дефектом виртуального рендеринга в режиме без монитора, снова ограниченным тем, когда экземпляр Chrome запускается через службу (TeamCity).

Все тесты выполняются нормально, когда яЗапустите сценарий сборки из командной строки на виртуальной машине сервера сборки.

Я решил проблему путем понижения версии Chrome.Легче сказать, чем сделать:

  1. Я не смог найти официальный способ получить доступ к старым версиям Chrome, но нашел эту ссылку, на которой размещены некоторые.Используйте на свой страх и риск: https://www.slimjet.com/chrome/google-chrome-old-version.php

  2. Я скачал версию Скачать version 71.0.3578.80

  3. Удалите Chrome с сервера сборки, запустите этот установщик.

  4. Как только каталог обновления будет создан в процессе установки: C:\Program Files (x86)\Google\Update переименуйте файл GoogleUpdate.exe, чтобы предотвратить его обновление

  5. Отключите задачи обновления Google Chrome в планировщике задач

ОБНОВЛЕНИЕ: ответ здесь предполагает, что проблему можно решить с помощью некоторых дополнительных аргументов, передаваемых хроматографу, я не проверял это решение:

https://sqa.stackexchange.com/a/38456/37816

...