web-dev-qa-db-ja.com

レンダラーからのメッセージの受信がタイムアウトしました:Chromedriverとchrome Windows上のJenkinsを使用してスクリーンショットをキャプチャしているときに10.000

OS:Windows 10 Browser:Chrome Browser version:Version 73.0.3683.86(Official Build)(32-bit)

1ページのタイトルを確認するSelenium cucumber BDDプロジェクトを実行しています。エクステントレポートバージョン4を使用しています。プロジェクトはローカルで正常に実行されています。しかし、Jenkinsで実行すると、スクリーンショットのキャプチャ中にエラーが発生し、以下のエラーが表示されます。

Surfireプラグインをpom.xmlから削除すると、テストはJenkins経由で実行されません。

Jenkinsの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>

ジェンキンスログ:


     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
10
Ajinkya

chromedriver = 73.0.3683.68およびchrome = 73.0.3683.86Windows OSを使用しているようです

John Chen(所有者-chromedriver)は最近次のことを確認しました:

Chrome 73.0.3686.75がWindows上のサービス(Jenkinsやタスクスケジューラなど)によって開始されたとき、スクリーンショットを撮る際の問題を確認しました。詳細は https://crbug.comをご覧ください)/94202 詳細についてこの問題によりご迷惑をおかけしましたことをお詫び申し上げます。

ただし、Linuxで同様の問題を確認することはまだできていないため、Linuxで問題を再現するためにご提供いただける支援をお願いいたします。 TeamCityへのアクセス権はありませんが、Seleniumによって作成されたDockerイメージ(Selenium/standalone-chrome:3.141.59-lithium)を使用してスクリーンショットを撮ることをテストしましたが、問題は見つかりませんでした。

chromedriver73


更新

本編を掘り下げることができました。主な問題はChromeDriver v73.x自体ではなく、Chrome v73.xであり、Johnは次のように正式に確認しています。

根本的な原因は確かにChrome 73.xであり、ChromeDriverではありません。Chrome devsと協力して解決策を見つけています。

chrome73_issue


解決

解決策は次のとおりです。

注:Chromeバージョン72を使用している場合は、ChromeDriver 2.46またはChromeDriver 72.0.3626.69をダウンロードしてください。


アウトロ


アップデート(03-April-2019)

ChromeOptions()のインスタンスを介して引数--disable-features=VizDisplayCompositorを追加すると、問題が解決するようです。

ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-features=VizDisplayCompositor");
WebDriver driver = new ChromeDriver(options);
driver.get("https://google.com");
11
DebanjanB

同じバージョンのChrome/Teamdriverビルドからヘッドレスで実行しているときにChromedriverを実行すると同じ問題が発生しました。これは、最新のアップデートが2019年3月25日にサーバーを構築します。

スクリーンショットが最初に取得された理由は、ヘッドレスモードでの仮想レンダリングに関する関連の欠陥であると思われるため、テストも失敗し始めたためです= Chromeは、サービス(TeamCity)を介して実行されます。

ビルドサーバーVMでコマンドプロンプトからビルドスクリプトを実行すると、テストはすべて正常に実行されます。

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タスクスケジューラでタスクを更新する

更新:ここでの回答は、問題がchromedriverに渡される追加の引数で修正できることを示唆しています。私はこのソリューションをテストしていません。

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

0
TheLogicMan

私は同じ問題を抱えていて、それを取り除く作業をしました

 chromeOptions.addArguments("--window-size=1920,1080");

または使用

 chromeOptions.addArguments("--window-size=1920,1080");
 chromeOptions.addArguments("--force-device-scale-factor=1");
0
Paola Reyes