렌더러에서 메시지 수신 시간 초과 : Selenium Java를 통해 ChromeDriver 및 Chrome v80을 사용하여 0.100 개의 로그 메시지


39

Google은 최근 ChromeDriver v80.0.3987.16 및 Chrome v80.0.3987.87 (공식 빌드) (64 비트)로 테스트 환경을 업그레이드했으며 업그레이드 후에도 최소한의 프로그램만으로도 이러한 심각한 로그가 많이 생성됩니다.

[1581082019.282][SEVERE]: Timed out receiving message from renderer: 0.100
[1581082020.245][SEVERE]: Timed out receiving message from renderer: 0.100

이전에 이러한 메시지는 ChromeDriver v79.0 / Chrome v79.0 콤보를 사용할 때까지 가끔 관찰되었습니다.

최소 코드 블록 :

public class chromeDemo 
{
    public static void main(String[] args) 
    {
            System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
            WebDriver driver =  new ChromeDriver();
            driver.get("https://www.google.com/");
            driver.quit();
    }
}

콘솔 출력 :

Starting ChromeDriver 80.0.3987.16 (320f6526c1632ad4f205ebce69b99a062ed78647-refs/branch-heads/3987@{#185}) on port 9194
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
Feb 07, 2020 6:56:57 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C
[1581082019.282][SEVERE]: Timed out receiving message from renderer: 0.100
[1581082020.245][SEVERE]: Timed out receiving message from renderer: 0.100
[1581082020.430][SEVERE]: Timed out receiving message from renderer: 0.100
[1581082020.531][SEVERE]: Timed out receiving message from renderer: 0.100
[1581082020.632][SEVERE]: Timed out receiving message from renderer: 0.100
[1581082020.734][SEVERE]: Timed out receiving message from renderer: 0.100
[1581082020.835][SEVERE]: Timed out receiving message from renderer: 0.100
[1581082021.364][SEVERE]: Timed out receiving message from renderer: 0.100
[1581082021.544][SEVERE]: Timed out receiving message from renderer: 0.100
[1581082021.647][SEVERE]: Timed out receiving message from renderer: 0.100
[1581082021.748][SEVERE]: Timed out receiving message from renderer: 0.100
[1581082021.850][SEVERE]: Timed out receiving message from renderer: 0.100
[1581082021.952][SEVERE]: Timed out receiving message from renderer: 0.100

같은 사람이 있습니까? ChromeDriver / Chrome v79와 관련하여 ChromeDriver / Chrome v80에서 변경된 것이 있습니까? 단서가 있습니까?


7
나는 또한 같은 문제에 직면하고있다 :(
Sooraj

6
v80으로 업그레이드하면 같은 문제가 발생합니다. 그러나 귀하의 질문은 다른 사람이 같은 문제에 직면하고 있는지 묻는 대신 문제를 해결하는 방법을 묻어 야합니다.
Taplar

2
이 질문이 끝났다고 믿을 수 없습니다. 여러 번 SO는 엔진이 도와주지 못합니다.
Saeed Neamati

4
정확히 같은 문제에 직면. 자동화 된 Selenium 코드가 모두 손상되었습니다. 그리고 많은 복잡성으로 인해 다운 그레이드 할 수 없습니다.
Saeed Neamati

2
@DebanjanB 네, 당신의 게시물을 겪었습니다. 그들이 다음 릴리스에서 고칠 수 있기를 바랍니다. 해결책을 찾아서 언급했지만 시간 초과를 방지하는 더 많은 옵션이 있습니다. 다른 옵션으로 시도하지만 시간 초과 기간이 매우 적 으면 다음 릴리스를 기다려야한다고 생각합니다.
Muzzamil

답변:


24

임시 솔루션

다양한 Chrome 사용자를 위한 솔루션은 다음과 같습니다 .

  • 경우 당신이 사용하는 크롬 V80을 최근에 출시 된 사용 ChromeDriver 80.0.3987.106 로 해결할 수있는 문제.

    • 코드 블록 :

      System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
      WebDriver driver =  new ChromeDriver();
      driver.quit();
      
    • 콘솔 출력 :

      Starting ChromeDriver 80.0.3987.106 (f68069574609230cf9b635cd784cfb1bf81bb53a-refs/branch-heads/3987@{#882}) on port 20041
      Only local connections are allowed.
      Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
      Feb 14, 2020 9:50:57 PM org.openqa.selenium.remote.ProtocolHandshake createSession
      INFO: Detected dialect: W3C
      
  • 당신이 사용하는 경우 크롬 v81을 최근에 출시 된 사용 ChromeDriver 81.0.4044.20을 문제를 해결합니다.

  • 개발자 또는 카나리아 채널 에서 Chrome 을 사용 하는 경우 플랫폼 별 바이너리를 선택해야합니다.

영구적 인 솔루션

그러나 다음과 같은 @bugdroid개정 / 커밋 을 통해 실제 수정 사항을 제출했습니다 .

[ChromeDriver] 재시도 루프 시간 종료 로깅 억제 : r1924789 가 DevTools 메시지를 기다리는 동안 재시도 루프를 추가했습니다. 정보가없는 시간 초과 보고서가 포함 된이 스팸 사용자 로그. 이 CL은 해당 로그 메시지를 억제하고 적절한 경우 명령 제한 시간 값을 올바르게보고합니다.

참고 :

  • 상태 : 고정
  • 라벨 : ToBeReleased ChromeDriver-82

역사

이 오류 메시지는 ...

[1581082020.245][SEVERE]: Timed out receiving message from renderer: 0.100

... 실패한 것은 아닙니다.

@Tricia가 언급 했듯이 ChromeDriver 버전 80은 더 많은 재 시도를 허용하기 위해 대기 루프를 수정했습니다. 이 루프는 해당 메시지를 생성하지만 계속 듣습니다. 그러나 해당 메시지 의 SEVERE 태그가 잘못되었습니다.

또한, 토론에 3332 문제 : 재시도 시간 제한이 심한로 기록 , @triciac [ChromeDriver 커미터는 또한 ChromeDriver 팀에 작은 제한 시간 (100 밀리) 추가 덧붙였다 DevToolsClientImpl::HandleEventsUntil탐색 상태의 추가 검사를 가능하게 할 수 있습니다. 그러나 불행히도이 시간 초과가 만료되면 SEVERE (by ProcessNextMessage) 로 기록됩니다 . 이 작은 제한 시간 초과의 경우 여전히 제한 시간 초과가 발생하더라도 SEVERE로 로그하면 SendCommandInternal안됩니다.

따라서 ChromeDriver는 시간 초과를 늘려서 더 나은 방식으로 로깅을 제어 할 수있는 방법이 필요합니다. 그러나 명령이 마지막으로 시간 종료 되면 시간 초과 기간이 매우 작 으면 사용자 정의 시간 종료를 대신 나열해야합니다.


즉각적인 솔루션

임시 해결책으로, 당신은에 다운 그레이드 할 수 있습니다 ChromeDriver의 v79.0.3945.36 가 보인다 SEVERE 로그를 콘솔에 표시되지 않지만이 관찰됩니다 경고 :

[WARNING]: This version of ChromeDriver has not been tested with Chrome version 80

안전한 해결 방법 처럼 들리며 Chromium 팀원에 의해 확인되었습니다 .

크롬 드라이버 79

  • 코드 블록 :

    public class A_Chrome 
    {
        public static void main(String[] args) 
        {
            System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
            WebDriver driver =  new ChromeDriver();
            driver.get("https://www.google.com/");
            driver.quit();
        }
    }
    
  • 콘솔 출력 :

    Starting ChromeDriver 79.0.3945.36 (3582db32b33893869b8c1339e8f4d9ed1816f143-refs/branch-heads/3945@{#614}) on port 9200
    Only local connections are allowed.
    Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
    [1581503845.444][WARNING]: This version of ChromeDriver has not been tested with Chrome version 80.
    Feb 12, 2020 4:07:26 PM org.openqa.selenium.remote.ProtocolHandshake createSession
    INFO: Detected dialect: W3C
    

tl; 닥터

다음에서 관련 토론을 찾을 수 있습니다.


1
또한이 로그 메시지는 stderror에 기록 된 것으로 나타납니다. vstest.console.exePowerShell $?변수가 $false테스트를 통과 했지만를 사용하여 테스트를 실행 한 후 PowerShell 스크립트가 시작되지 않았습니다 . PowerShell은 $LastExitCode테스트 러너의 경우 0을 반환 했지만 stderror에 쓰여지는 것은 실패라고 생각하는 것 같습니다 .
Greg Burghardt

4
Re : Chrome v80은 최근에 출시 된 ChromeDriver 80.0.3987.106을 사용하여 문제를 해결합니다. Re : Chrome v81, 최근에 출시 된 ChromeDriver 81.0.4044.20을 사용하면 문제가 해결됩니다. 여전히 ChromeDirver 업데이트에 문제가 있습니다.

1
예 !!!!! ChromeDriver v79 win32는 크롬 v80.0.3987.132에서 제대로 작동하며 콘솔에서 TimedOut 오류를 발생시키지 않습니다. 그러나 때때로 Chromedriver가 서버를 시작하지 못했습니다.
Surodip

1
chromedriver v79 해결 방법을 사용하면 드라이버가 크롬을 열 수조차없는 최신 버전의 안정된 크롬 (81.0.4044.92)에서 더 이상 작동하지 않습니다. 크롬 드라이버를 최신으로 업그레이드했는데 작동하지만 심각한 시간 초과 오류가 반환되었습니다.
PST

@PST-정확히 같은 문제. 이것은 좌절입니다.
Sriram Ilango

10

근본 원인 : 셀레늄 드라이버를 사용하여 일부 페이지를로드 할 때마다 driver페이지가 완전히로드 될 때까지 스크립트가 대기합니다. 그러나 때로는 웹 드라이버가 페이지를로드하는 데 시간이 더 걸리므로 TimeoutException콘솔에 예외가 표시됩니다.

해결 방법 : 페이지로드에 시간이 너무 오래 걸리고 추가 하위 리소스 (이미지, CSS, js 등) 다운로드 를 중지해야하는 경우 웹 드라이버를 통해 pageLoadStrategy를 변경할 수 있습니다.

아래 코드 는 페이지 에서 HTML 내용 을 로드합니다 . chromeoptions 에서 페이지로드 전략을 설정할 수 있습니다

ChromeOptions options = new ChromeOptions();
options.setPageLoadStrategy(PageLoadStrategy.NONE);

업데이트 된 솔루션 -2 : 테스트를 수행하는 동안 추가 파일 (이미지, CSS, JS 등)을 다운로드하지 않고 DebanjanB, None with PageLoad 전략에 동의합니다. 나는 그것에 관한 모든 문제를 검색하고 유효한 해결책을 찾으려고 노력했습니다. 언젠가이 문제를 해결할 수 있었으므로 아래 옵션을 시도했습니다.

    options.addArguments("start-maximized"); 
    options.addArguments("enable-automation"); 
    options.addArguments("--no-sandbox"); 
    options.addArguments("--disable-infobars"); 
    options.addArguments("--disable-dev-shm-usage"); 
    options.addArguments("--disable-browser-side-navigation"); 
    options.addArguments("--disable-gpu");

그들 중 누구도 도움이되지 않았지만 Page load 전략으로 다시 한 가지 해결책을 찾았습니다. 이번에는 모든 하위 리소스를 다운로드하고 있지만 DOMContentLoaded 이벤트를 기다리고 있습니다. 이 전략은 Eager 라고 불렀습니다 . 사용 가능한 3 개의 모든 페이지로드 전략에 대한 작은 정의

1. normal : 이 전략은 Selenium이 전체 페이지로드 (html 컨텐츠 및 하위 자원 다운로드 및 구문 분석)를 기다립니다.

2. eager : 이 전략은 Selenium이 DOMContentLoaded 이벤트를 기다립니다 (html 컨텐츠 다운로드 및 구문 분석 만).

3. none : 이 전략은 초기 페이지 컨텐츠가 완전히 수신 된 직후 (html 컨텐츠 다운로드) Selenium을 리턴합니다.

참고 : 기본적으로 Selenium은 페이지를로드 할 때 일반 pageLoadStrategy를 따릅니다.

페이지로드 전략을 사용하지 않는 코드 스 니펫 (또는 기본적으로 셀레늄이 사용하는 일반)

System.setProperty("webdriver.chrome.driver", "C:\\Users\\...\\LatestDriver\\chromedriver.exe");   
WebDriver driver=new ChromeDriver();
driver.get("http://www.google.com");
driver.manage().window().maximize();
WebDriverWait wait = new WebDriverWait(driver, 20);
WebElement el = wait.until(ExpectedConditions.elementToBeClickable(By.name("q")));
el.click();
List <WebElement> allLinks = driver.findElements(By.tagName("a"));
System.out.println(allLinks.size());
driver.quit();

콘솔 출력 :

포트 41540에서 ChromeDriver 80.0.3987.16 (320f6526c1632ad4f205ebce69b99a062ed78647-refs / branch-heads / 3987 @ {# 185}) 시작 로컬 연결 만 허용됩니다. 악성 코드에 의한 액세스를 방지하기 위해 ChromeDriver 및 관련 테스트 프레임 워크에서 사용하는 포트를 보호하십시오. 2020 년 2 월 11 일 오전 10시 22 분 12 초 org.openqa.selenium.remote.ProtocolHandshake createSession 정보 : 감지 된 방언 : W3C [1581412933.937] [SEVERE] : 렌더러로부터 메시지 수신 시간이 초과 됨 : 0.100 [1581412934.066] [SEVERE] : 시간 초과 렌더러에서 메시지 수신 : 0.100 [1581412934.168] [SEVERE] : 렌더러에서 메시지 수신 시간 초과 : 0.100 [1581412934.360] [SEVERE] : 렌더러에서 메시지 수신 시간 초과 : 0.100 [1581412934.461] [SEVERE] : 렌더러에서 메시지 수신 시간 초과 : 0.100 [1581412934.618] [심각한] :

PageLoad 전략으로-열망 :

코드 스 니펫 :

System.setProperty("webdriver.chrome.driver", "C:\\Users\\...\\LatestDriver\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.setPageLoadStrategy(PageLoadStrategy.EAGER);
WebDriver driver=new ChromeDriver(options);
driver.get("http://www.google.com");
driver.manage().window().maximize();
WebDriverWait wait = new WebDriverWait(driver, 20);
WebElement el = wait.until(ExpectedConditions.elementToBeClickable(By.name("q")));
el.click();
List <WebElement> allLinks = driver.findElements(By.tagName("a"));
System.out.println(allLinks.size());
driver.quit();

콘솔 출력 :

포트 1175에서 ChromeDriver 80.0.3987.16 (320f6526c1632ad4f205ebce69b99a062ed78647-refs / branch-heads / 3987 @ {# 185}) 시작 로컬 연결 만 허용됩니다. 악성 코드에 의한 액세스를 방지하기 위해 ChromeDriver 및 관련 테스트 프레임 워크에서 사용하는 포트를 보호하십시오. 2020 년 2 월 11 일 오전 10시 29 분 5 초 org.openqa.selenium.remote.ProtocolHandshake createSession 정보 : 감지 된 방언 : W3C
21


WebDriver 구성이 표준화되어 필요한 테스트 전략에 가장 적합하기 때문에 일반적으로 PageLoad 전략을 조정할 수 없습니다. 그러나 토론에 어떻게 셀레늄은 전체 페이지로드까지 기다릴 수 있도록하기 위해 , 로드 페이지 기다리지 말고 우리가 세부 사항을 논의했다. ChromeDriver v80에 문제가 있습니다.
DebanjanB

2
@DebanjanB 동의합니다. 아시다시피 SO는 문제를 해결하려는 커뮤니티입니다. 가능한 최선의 솔루션을 시도했습니다. 크롬 드라이버에서 문제 또는 버그 임을 알고 있다면 Git 프로젝트 또는 권장 장소 에이 문제를 기록해야합니다. SO로 질문을 올리면 도움이되지 않습니다.
Muzzamil

최근에 크롬과 크롬 드라이버를 업데이트 한 후이 모든 경고 메시지를 받기 시작했습니다. 이제 크롬을 다운 그레이드하려고하는데 크롬 79v를 얻을 수있는 곳을 찾을 수 없습니다. 누군가 나에게 크롬 79v
Vin

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.