Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
org.openqa.selenium.WebDriverException:等待驱动程序服务器启动selenium和Java AWS EC2 ubuntu服务器时超时_Java_Selenium_Maven_Ubuntu_Cucumber - Fatal编程技术网

org.openqa.selenium.WebDriverException:等待驱动程序服务器启动selenium和Java AWS EC2 ubuntu服务器时超时

org.openqa.selenium.WebDriverException:等待驱动程序服务器启动selenium和Java AWS EC2 ubuntu服务器时超时,java,selenium,maven,ubuntu,cucumber,Java,Selenium,Maven,Ubuntu,Cucumber,我在尝试使用java运行selenium时遇到以下错误,并使用命令mvn install 环境详情: 1-OS:Ubuntu 20.04 LTS 2-Java版本:openjdk版本“1.8.0282” 3-google-chrome版本:google chrome 90.0.4430.93 4-chrome-driver版本:ChromeDriver 90.0.4430.24(4c6d850f087da467d926e8eddb76550aed655991参考/分支头/4430@{42

我在尝试使用java运行selenium时遇到以下错误,并使用命令mvn install


环境详情


1-OS:Ubuntu 20.04 LTS

2-Java版本:openjdk版本“1.8.0282”


3-google-chrome版本:google chrome 90.0.4430.93


4-chrome-driver版本:ChromeDriver 90.0.4430.24(4c6d850f087da467d926e8eddb76550aed655991参考/分支头/4430@{429})


代码

public void setWebDriver() throws Exception {


    String browser = System.setProperty("webdriver.chrome.driver", "/usr/bin/google-chrome-stable");
    logger= Logger.getLogger("ChiraghCucumber");
 PropertyConfigurator.configure("log4j.properties");
    if (browser == null) {
        browser = "chrome";
    }
    switch (browser) {
        case "chrome":
            ChromeOptions chromeOptions = new ChromeOptions();
            chromeOptions.addArguments("['start-maximized']");
            chromeOptions.addArguments("--headless");
          //  chromeOptions.addArguments("--no-sandbox");
            chromeOptions.addArguments("--disable-infobars");
            chromeOptions.addArguments("--disable-gpu");
            chromeOptions.addArguments("--ignore-certificate-errors");
            chromeOptions.addArguments("--ignore-certificate-errors");
            driver = new ChromeDriver(chromeOptions);
            break;
        case "firefox":
            driver = new FirefoxDriver();
            driver.manage().window().maximize();
            break;
        default:
            throw new IllegalArgumentException("Browser \"" + browser + "\" isn't supported.");
    }
}
错误

[INFO] Scanning for projects...
[WARNING]
[WARNING] Some problems were encountered while building the effective model for org.example:ChiraghCucumber:jar:1.0-SNAPSHOT
[WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: org.junit.jupiter:junit-jupiter-api:jar -> duplicate declaration of version 5.7.1 @ line 222, column 21
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]
[INFO]
[INFO] --------------------< org.example:ChiraghCucumber >---------------------
[INFO] Building ChiraghCucumber 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ ChiraghCucumber ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/ubuntu/automation/chiragh_seleniumJava/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ ChiraghCucumber ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 2 source files to /home/ubuntu/automation/chiragh_seleniumJava/target/classes
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ ChiraghCucumber ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 5 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ ChiraghCucumber ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 17 source files to /home/ubuntu/automation/chiragh_seleniumJava/target/test-classes
[INFO] /home/ubuntu/automation/chiragh_seleniumJava/src/test/java/utilities/GmailQuickStart1.java: Some input files use or override a deprecated API.
[INFO] /home/ubuntu/automation/chiragh_seleniumJava/src/test/java/utilities/GmailQuickStart1.java: Recompile with -Xlint:deprecation for details.
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ ChiraghCucumber ---
[INFO] Surefire report directory: /home/ubuntu/automation/chiragh_seleniumJava/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running testRunner.testRunnerTest

@LoginValidation1
Scenario Outline: Submit KYC form with valid data                                 # src/test/resources/kycPage.feature:61
      org.openqa.selenium.WebDriverException: Timed out waiting for driver server to start.
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'ip-172-31-35-227', ip: '172.31.35.227', os.name: 'Linux', os.arch: 'amd64', os.version: '5.4.0-1038-aws', java.version: '1.8.0_282'
Driver info: driver.version: ChromeDriver
        at org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:202)
        at org.openqa.selenium.remote.service.DriverService.start(DriverService.java:188)
        at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:79)
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
        at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213)
        at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:181)
        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:168)
        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:157)
        at stepDefinitions.steps_loginPage.setWebDriver(steps_loginPage.java:51)
Caused by: org.openqa.selenium.net.UrlChecker$TimeoutException: Timed out waiting for [http://localhost:28172/status] to be available after 20002 ms
        at org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:100)
        at org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:197)
        at org.openqa.selenium.remote.service.DriverService.start(DriverService.java:188)
        at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:79)
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
        at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213)
        at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:181)
        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:168)
        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:157)
        at stepDefinitions.steps_loginPage.setWebDriver(steps_loginPage.java:51)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at io.cucumber.java.Invoker.doInvoke(Invoker.java:66)
        at io.cucumber.java.Invoker.invoke(Invoker.java:24)
        at io.cucumber.java.AbstractGlueDefinition.invokeMethod(AbstractGlueDefinition.java:47)
        at io.cucumber.java.JavaHookDefinition.execute(JavaHookDefinition.java:59)
        at io.cucumber.core.runner.CoreHookDefinition.execute(CoreHookDefinition.java:46)
        at io.cucumber.core.runner.HookDefinitionMatch.runStep(HookDefinitionMatch.java:21)
        at io.cucumber.core.runner.ExecutionMode$1.execute(ExecutionMode.java:10)
        at io.cucumber.core.runner.TestStep.executeStep(TestStep.java:92)
        at io.cucumber.core.runner.TestStep.run(TestStep.java:64)
        at io.cucumber.core.runner.TestCase.run(TestCase.java:98)
        at io.cucumber.core.runner.Runner.runPickle(Runner.java:73)
        at io.cucumber.junit.PickleRunners$NoStepDescriptions.run(PickleRunners.java:151)
        at io.cucumber.junit.FeatureRunner.runChild(FeatureRunner.java:135)
        at io.cucumber.junit.FeatureRunner.runChild(FeatureRunner.java:27)
        at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
        at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
        at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
        at io.cucumber.junit.Cucumber.runChild(Cucumber.java:200)
        at io.cucumber.junit.Cucumber.runChild(Cucumber.java:90)
        at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
        at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
        at io.cucumber.junit.Cucumber$RunCucumber.evaluate(Cucumber.java:235)
        at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
Caused by: java.util.concurrent.TimeoutException
        at java.util.concurrent.FutureTask.get(FutureTask.java:205)
        at com.google.common.util.concurrent.SimpleTimeLimiter.callWithTimeout(SimpleTimeLimiter.java:156)
        at org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:75)
        ... 57 more

  Given User is on the login page                                                 # stepDefinitions.steps_loginPage.user_is_on_the_login_page()
  When User is providing an email "alia.dnan38@gmail.com" and password "A1122a@@" # stepDefinitions.steps_loginPage.user_is_providing_a_valid_email_and_password(java.lang.String,java.lang.String)
  And clicks on the "Login" button                                                # stepDefinitions.steps_loginPage.clicks_on_the_required_button(java.lang.String)
  And User clicks on profile icon and then username                               # stepDefinitions.steps_loginPage.user_clicks_on_profile_icon_and_then_username()
  And User lands on Profile Dashboard page                                        # stepDefinitions.steps_loginPage.user_lands_on_profile_dashboard_page()
  And clicks on profile link                                                      # stepDefinitions.steps_loginPage.clicks_on_profile_link()
  And clicks on KYC application link                                              # stepDefinitions.steps_loginPage.clicks_on_kyc_application_link()
  Then User lands on the KYC application form                                     # stepDefinitions.steps_loginPage.user_lands_on_the_kyc_application_form()
  And provide KYC form details                                                    # stepDefinitions.steps_loginPage.provide_kyc_form_details()
  And click on Submit button                                                      # stepDefinitions.steps_loginPage.click_on_submit_button()
  Then User can see "" as a success message                                       # stepDefinitions.steps_loginPage.user_can_see_as_a_success_message(java.lang.String)
  And Close the browser                                                           # stepDefinitions.steps_loginPage.close_the_browser()
┌───────────────────────────────────────────────────────────────────────────────────┐
│ Share your Cucumber Report with your team at https://reports.cucumber.io          │
│ Activate publishing with one of the following:                                    │
│                                                                                   │
│ src/test/resources/cucumber.properties:          cucumber.publish.enabled=true    │
│ src/test/resources/junit-platform.properties:    cucumber.publish.enabled=true    │
│ Environment variable:                            CUCUMBER_PUBLISH_ENABLED=true    │
│ JUnit:                                           @CucumberOptions(publish = true) │
│                                                                                   │
│ More information at https://reports.cucumber.io/docs/cucumber-jvm                 │
│                                                                                   │
│ Disable this message with one of the following:                                   │
│                                                                                   │
│ src/test/resources/cucumber.properties:          cucumber.publish.quiet=true      │
│ src/test/resources/junit-platform.properties:    cucumber.publish.quiet=true      │
└───────────────────────────────────────────────────────────────────────────────────┘
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 21.76 sec <<< FAILURE!
Submit KYC form with valid data #2(KYC Form functional Tests)  Time elapsed: 20.909 sec  <<< ERROR!
org.openqa.selenium.WebDriverException: Timed out waiting for driver server to start.
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'ip-172-31-35-227', ip: '172.31.35.227', os.name: 'Linux', os.arch: 'amd64', os.version: '5.4.0-1038-aws', java.version: '1.8.0_282'
Driver info: driver.version: ChromeDriver
        at org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:202)
        at org.openqa.selenium.remote.service.DriverService.start(DriverService.java:188)
        at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:79)
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
        at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213)
        at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:181)
        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:168)
        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:157)
        at stepDefinitions.steps_loginPage.setWebDriver(steps_loginPage.java:51)
Caused by: org.openqa.selenium.net.UrlChecker$TimeoutException: Timed out waiting for [http://localhost:28172/status] to be available after 20002 ms
        at org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:100)
        at org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:197)
        at org.openqa.selenium.remote.service.DriverService.start(DriverService.java:188)
        at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:79)
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
        at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213)
        at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:181)
        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:168)
        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:157)
        at stepDefinitions.steps_loginPage.setWebDriver(steps_loginPage.java:51)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at io.cucumber.java.Invoker.doInvoke(Invoker.java:66)
        at io.cucumber.java.Invoker.invoke(Invoker.java:24)
        at io.cucumber.java.AbstractGlueDefinition.invokeMethod(AbstractGlueDefinition.java:47)
        at io.cucumber.java.JavaHookDefinition.execute(JavaHookDefinition.java:59)
        at io.cucumber.core.runner.CoreHookDefinition.execute(CoreHookDefinition.java:46)
        at io.cucumber.core.runner.HookDefinitionMatch.runStep(HookDefinitionMatch.java:21)
        at io.cucumber.core.runner.ExecutionMode$1.execute(ExecutionMode.java:10)
        at io.cucumber.core.runner.TestStep.executeStep(TestStep.java:92)
        at io.cucumber.core.runner.TestStep.run(TestStep.java:64)
        at io.cucumber.core.runner.TestCase.run(TestCase.java:98)
        at io.cucumber.core.runner.Runner.runPickle(Runner.java:73)
        at io.cucumber.junit.PickleRunners$NoStepDescriptions.run(PickleRunners.java:151)
        at io.cucumber.junit.FeatureRunner.runChild(FeatureRunner.java:135)
        at io.cucumber.junit.FeatureRunner.runChild(FeatureRunner.java:27)
        at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
        at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
        at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
        at io.cucumber.junit.Cucumber.runChild(Cucumber.java:200)
        at io.cucumber.junit.Cucumber.runChild(Cucumber.java:90)
        at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
        at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
        at io.cucumber.junit.Cucumber$RunCucumber.evaluate(Cucumber.java:235)
        at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
Caused by: java.util.concurrent.TimeoutException
        at java.util.concurrent.FutureTask.get(FutureTask.java:205)
        at com.google.common.util.concurrent.SimpleTimeLimiter.callWithTimeout(SimpleTimeLimiter.java:156)
        at org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:75)
        ... 57 more


Results :

Tests in error:
  Submit KYC form with valid data #2(KYC Form functional Tests): Timed out waiting for driver server to start.(..)

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

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  25.862 s
[INFO] Finished at: 2021-04-28T07:28:34Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-test) on project ChiraghCucumber: There are test failures.
[ERROR]
[ERROR] Please refer to /home/ubuntu/automation/chiragh_seleniumJava/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

请提供此问题的答案

请检查这是否解决了您的问题:
<!DOCTYPE html>
<html lang="en"><head>
  <meta charset="utf-8">
  <title>Chrome Platform Status</title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">

  <meta name="theme-color" content="#366597">
  <link rel="icon" sizes="192x192" href="/static/img/crstatus_192.png">

  <!-- iOS: run in full-screen mode and display upper status bar as translucent -->
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">

  <link rel="apple-touch-icon" href="/static/img/crstatus_128.png">
  <link rel="apple-touch-icon-precomposed" href="/static/img/crstatus_128.png">
  <link rel="shortcut icon" href="/static/img/crstatus_128.png">

  <link rel="preconnect" href="https://www.google-analytics.com" crossorigin="">



  <style>
    html,body{margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline}div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,pre,a,abbr,acronym,address,code,del,dfn,em,img,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,caption,tbody,tfoot,thead,tr{margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline}blockquote,q{margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;quotes:"" ""}blockquote:before,q:before,blockquote:after,q:after{content:""}th,td,caption{margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;text-align:left;font-weight:normal;vertical-align:middle}table{margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;border-collapse:separate;border-spacing:0;vertical-align:middle}a img{border:none}*{box-sizing:border-box}*{box-sizing:border-box;list-style:none;font:inherit;text-decoration:inherit;-webkit-tap-highlight-color:rgba(0,0,0,0)}h1,h2,h3,h4{font-weight:300}h1{font-size:30px}h2,h3,h4{background:var(--heading-background);color:var(--heading-color)}h2{font-size:25px}h3{font-size:20px}a{text-decoration:none;color:var(--link-color)}a:hover{text-decoration:underline;color:var(--link-hover-color)}input:not([type="submit"]),textarea{border:1px solid #D4D4D4}input:not([type="submit"])[disabled],textarea[disabled]{opacity:0.5}button,input[type="submit"],.button{display:inline-block;padding:4px 16px;background:var(--button-background);border:var(--button-border);border-radius:var(--button-border-radius);color:var(--button-color);white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;font-size:var(--button-font-size)}button.primary,input[type="submit"],.button.primary{background:var(--primary-button-background);color:var(--primary-button-color);font-weight:bold}button:not(:disabled):hover{border-color:#515151}.comma::after{content:',';margin-right:.2em}.conditional-comma:last-child{display:none}.no-web-share{display:none}iron-icon{height:var(--icon-size);width:var(--icon-size)}.preformatted{white-space:pre-wrap}#updated{padding-top:var(--content-padding)}#updated span{color:var(--unimportant-text-color);border-top:var(--default-border);padding:var(--content-padding-quarter) var(--content-padding) 0 0}:root{--md-red-50: #ffebee;--md-red-700: #d32f2f;--md-light-blue-50: #e1f5fe;--md-blue-100: #bbdefb;--md-blue-700: #1976d2;--md-blue-900: #01579b;--md-orange-50: #fff3e0;--md-orange-200: #ffcc80;--md-yellow-100: #FFF9C4;--md-yellow-200: #FFF59D;--md-gray-50: #fafafa;--md-gray-300: #e0e0e0;--md-gray-50-alpha: hsla(0, 0%, 0%, 0.04);--md-gray-100-alpha: hsla(0, 0%, 0%, 0.12);--md-gray-700-alpha: hsla(0, 0%, 0%, 0.62);--md-gray-900-alpha: hsla(0, 0%, 0%, 0.87)}:root{--page-background: var(--md-gray-50);--default-font: 14px "Roboto", sans-serif;--form-element-font: system-ui;--default-color: var(--md-gray-900-alpha);--unimportant-text-color: var(--md-gray-700-alpha);--content-padding: 16px;--content-padding-half: 8px;--content-padding-quarter: 4px;--max-content-width: 760px;--border-radius: 4px;--large-border-radius: 8px;--logo-color: var(--default-color);--logo-size: 32px;--icon-size: 20px;--link-color: var(--md-blue-700);--link-hover-color: var(--md-blue-900);--light-accent-color: var(--md-light-blue-50);--dark-spot-color: var(--md-blue-900);--heading-background: transparent;--heading-color: var(--md-gray-700-alpha);--heading-underbar: 2px solid var(--md-blue-700);--nav-link-color: var(--md-gray-700-alpha);--nav-link-font-size: 16px;--nav-link-hover-background: var(--md-gray-100-alpha);--leftnav-link-color: var(--md-blue-900);--leftnav-selected-color: var(--md-blue-900);--leftnav-divider-border: 1px solid var(--md-gray-100-alpha);--button-background: inherit;--button-color: var(--md-gray-900-alpha);--button-font-size: 10pt;--button-border: 0;--button-border-radius: var(--border-radius);--primary-button-background: var(--md-blue-700);--primary-button-color: white;--default-border: 1px solid hsl(0, 0%, 85%);--card-background: white;--card-border: var(--default-border);--shadow-color: var(--md-gray-100-alpha);--card-box-shadow: var(--shadow-color) 1px 1px 4px;--spot-card-border: 1px solid var(--dark-spot-color);--spot-card-box-shadow: none;--accordion-background: var(--md-gray-100-alpha);--accordion-color: var(--default-color);--accordion-border-radius: var(--border-radius);--warning-background: var(--md-orange-200);--warning-color: var(--md-gray-900-alpha);--invalid-color: var(--md-red-700);--error-color: var(--md-red-700);--table-header-background: var(--md-gray-300);--table-row-background: white;--table-divider: var(--default-border);--table-alternate-background: var(--md-gray-50-alpha);--callout-bg-color: var(--dark-spot-color);--callout-text-color: white;--barchart-background: var(--md-blue-100);--barchart-foreground: var(--md-blue-700);--barchart-color: white;--toast-background: var(--md-gray-900-alpha);--toast-color: var(--md-gray-50);--toast-action-color: var(--md-orange-200);--footer-background: transparent}html,body{height:100%}body{color:var(--default-color);font:var(--default-