Oluşturucudan mesaj alma zaman aşımına uğradı: Selenium Java üzerinden ChromeDriver ve Chrome v80 kullanarak 0.100 günlük mesajı


39

Kısa bir süre önce test ortamımızı ChromeDriver v80.0.3987.16 ve Chrome v80.0.3987.87 (Resmi Derleme) (64 bit) ile yükselttik ve yükseltmeden sonra minimum program bile bu SEVERE günlüklerinin çoğunu üretiyor:

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

Daha önce bu mesajlar ChromeDriver v79.0 / Chrome v79.0 combo ile ara sıra gözlemlendi.

Minimum Kod Bloğu:

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();
    }
}

Konsol Çıkışı:

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

Aynı bakan biri var mı? ChromeDriver / Chrome v80'de ChromeDriver / Chrome v79 ile ilgili herhangi bir değişiklik oldu mu? Herhangi bir ipucu var mı?


7
Ben de aynı sorunla karşı karşıya :(
Sooraj

6
Aynı sorunu v80'e yükselttikten sonra alıyorum. Yine de, sorunuz başka birinin aynı sorunla karşı karşıya olup olmadığını sormak yerine muhtemelen nasıl düzeltileceğini sormalıdır.
Taplar

2
Bu sorunun kapatıldığına inanamıyorum. Çoğu zaman SO, yardımcı olmak için motor olarak başarısız olur.
Saeed Neamati

4
Tamamen aynı sorunla karşı karşıya. Tüm otomatik Selenyum kodlarımız bozuldu. Ve birçok karmaşıklık nedeniyle indirgenemeyiz.
Saeed Neamati

2
@DebanjanB Evet, yazınızı inceledim. Umarım bir sonraki sürümde düzeltebilirler. Çözümü bulmaya çalıştım, bu yüzden bahsetmiştim ama zaman aşımını önlemek için daha fazla seçenek var. Diğer seçenek ile deneyeceğim ama zaman aşımı süresi çok daha az ise, bir sonraki sürüm için beklememiz gerektiğini düşünüyorum.
Muzzamil

Yanıtlar:


24

Geçici çözüm

İşte Chrome kullanıcılarının farklı varyantları için çözümler .

  • Eğer kullandığınız Chrome V80 son zamanlarda yayımlanan kullanarak, ChromeDriver 80.0.3987.106 çözer sorunu.

    • Kod Bloğu:

      System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
      WebDriver driver =  new ChromeDriver();
      driver.quit();
      
    • Konsol Çıkışı:

      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
      
  • Eğer kullanıyorsanız , Chrome v81 son zamanlarda yayımlanan kullanarak, ChromeDriver 81.0.4044.20 sorunu çözer.

  • Eğer kullanıyorsanız Chrome dan Dev veya Kanarya kanalında Eğer platforma özel ikili pikap gerekir:

Kalıcı çözüm

Ancak @bugdroidasıl düzeltmeyi aşağıdaki revizyon / taahhüt yoluyla sunmuştur :

[ChromeDriver], yeniden deneme döngüsü zaman aşımının günlüğe kaydedilmesini bastırıyor : r1924789 , DevTools iletilerini beklerken bir yeniden deneme döngüsü ekledi. Bu spam içerikli kullanıcıların günlükleri, bilgilendirici olmayan zaman aşımı raporlarıyla birlikte. Bu CL bu günlük iletilerini bastırır ve uygun olduğunda komut zaman aşımı değerini doğru bir şekilde rapor eder.

Not :

  • Durum: Sabit
  • Etiketler: ToBeReleased ChromeDriver-82

Tarih

Bu hata mesajı ...

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

... mutlaka bir arıza olduğunu göstermez.

@Tricia'nın belirttiği gibi, ChromeDriver Sürüm 80, daha fazla yeniden deneme yapmak için bir bekleme döngüsünü değiştirdi; bu döngü bu mesajı oluşturur, ancak dinlemeye devam eder. Ancak bu iletinin SEVERE etiketi yanıltıcıdır.

Ayrıca, 3332 numaralı sorunda : Ciddi olarak günlüğe kaydedilen yeniden deneme zaman aşımı , @triciac [ChromeDriver Committer] ayrıca, ChromeDriver ekibinin DevToolsClientImpl::HandleEventsUntilgezinme durumunun ek denetimini etkinleştirmek için küçük bir zaman aşımı (100 ms) eklediğini de ekledi . Ancak, ne yazık ki bu zaman aşımı süresi dolduğunda SEVERE (tarafından ProcessNextMessage) olarak günlüğe kaydedilir . Bu küçük zaman aşımı durumunda, SEVERE olarak oturum açmamalı , ancak zaman aşımı süreleri SendCommandInternaldevam etmelidir.

Bu nedenle ChromeDriver'ın, muhtemelen zaman aşımını artırarak günlüğü daha iyi kontrol etmenin bir yoluna ihtiyacı vardır. Ancak, komut sonunda zaman aşımına uğrarsa, listelenen zaman aşımı süresi çok küçükse, bunun yerine kullanıcı tanımlı zaman aşımını listelemek gerekir.


Anında çözüm

Geçici bir çözüm olarak, geçiş yapabilir ChromeDriver v79.0.3945.36 göründüğü gibi CİDDİ günlükleri konsolda gösterir gelmez ama gözlemleyeceksiniz UYARI :

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

... güvenli bir çözüm gibi görünüyor ve bir Chromium ekip üyesi tarafından onaylanmıştı .

chromedriver79

  • Kod Bloğu:

    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();
        }
    }
    
  • Konsol Çıkışı:

    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; dr

İlgili birkaç tartışmayı şu adreste bulabilirsiniz:


1
Ayrıca bu günlük mesajının stderror'a yazıldığını unutmayın. Testleri geçmesine rağmen vstest.console.exePowerShell $?değişkeni olduğu $falseiçin testleri çalıştırdıktan sonra başarısız bir PowerShell komut dosyası başlatma vardı . PowerShell $LastExitCode, test koşucusu için sıfır döndürmesine rağmen, strorror'a yazılan bir şeyin başarısız olduğunu düşünüyor .
Greg Burghardt

4
Yanıt: Chrome v80, yakın zamanda yayınlanan ChromeDriver 80.0.3987.106'yı kullanarak sorunu çözüyor. Yanıt: Chrome v81, yakın zamanda yayınlanan ChromeDriver 81.0.4044.20'yi kullanarak sorunu çözüyor. Hala ChromeDirver güncellemeleriyle ilgili sorunu görüyorum.
Neil

1
Evet !!!!! ChromeDriver v79 win32, krom v80.0.3987.132 ile iyi çalışıyor ve konsolda TimedOut hatası vermiyor. Ancak bazen Chromedriver sunucuyu başlatamadı.
Mart'ta Surodip

1
Chromemedriver v79 geçici çözümünü kullanmak, sürücünün kromu bile açamamasıyla birlikte kararlı kromun en son sürümü (81.0.4044.92) ile çalışmıyor. Chromriver'ı en son sürüme yükselttim ve işe yarıyor, ancak ciddi zaman aşımı hataları geri döndü.
PST

@PST - tamamen aynı problemler. Bu sinir bozucu.
Sriram Ilango

10

Temel neden: Selenyum sürücüsü yardımıyla bir driversayfa yüklediğinizde, komut dosyası sayfanın tamamen yüklenmesini bekleyin. Ancak bazen web sürücüsünün sayfayı yüklemek daha fazla zaman alır, bu durumda TimeoutExceptionkonsolunuzda istisna görürsünüz .

Çözüm: Sayfa Yükleme çok fazla zaman alıyorsa ve ek alt kaynaklar (resimler, css, js vb.) İndirmeyi durdurmanız gerektiğinde , webLriver aracılığıyla pageLoadStrategy'yi değiştirebilirsiniz.

Aşağıdaki kod sadece html içeriğini sayfadan yükleyin . Sayfa yükleme stratejisini chromeoptions'tan ayarlayabilirsiniz

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

Güncellenmiş Çözüm -2: DebanjanB ile aynı fikirdeyim, PageLoad stratejisi Yok ile, ek dosyalar (görüntüler, css, js vb.) İndirmeden test yaparken iyi bir fikir değil. Bununla ilgili tüm sorunları araştırdım ve geçerli bir çözüm bulmaya çalıştım. Bir zamanlar bu sorunu çözmeyi başardığım için aşağıdaki seçenekleri denedim.

    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");

Hiçbiri yardımcı olmadı ama Sayfa yükleme stratejisiyle tekrar bir çözüm buldum. Bu sefer tüm alt kaynakları indiriyoruz ancak DOMContentLoaded etkinliğini bekliyoruz. Bu stratejiye Eager deniyor . Tüm 3 sayfa yükleme stratejisinin küçük bir tanımı

1. normal: Bu strateji, Selenyum'un tam sayfa yüklemesini (html içeriği ve indirilen ve ayrıştırılan alt kaynaklar) beklemesine neden olur.

2. istekli: Bu strateji Selenium'un DOMContentLoaded etkinliğini beklemesine neden olur (yalnızca html içeriği indirildi ve ayrıştırıldı).

3. yok: Bu strateji, ilk sayfa içeriği tamamen alındıktan hemen sonra Selenium'un geri dönmesine neden olur (html içeriği indirildi).

NOT: Varsayılan olarak, Selenium bir sayfa yüklediğinde, normal pageLoadStrategy öğesini izler.

Sayfa yükleme stratejisi kullanmadan kod snippet'i (Veya varsayılan olarak selenyum tarafından kullanılan Normal)

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();

Konsol Çıkışı:

41540 numaralı bağlantı noktasından ChromeDriver 80.0.3987.16 (320f6526c1632ad4f205ebce69b99a062ed78647-refs / şube kafaları / 3987 @ {# 185}) 'nın başlatılması Yalnızca yerel bağlantılara izin verilir. Kötü amaçlı kodlarla erişimi önlemek için lütfen ChromeDriver tarafından kullanılan bağlantı noktalarını ve ilgili test çerçevelerini koruyun. 11 Şub 2020 10:22:12 AM org.openqa.selenium.remote.ProtocolHandshake createSession BİLGİ: Algılanan lehçe: W3C [1581412933.937] [SEVERE]: Oluşturucudan mesaj alma zaman aşımına uğradı: 0.100 [1581412934.066] [SEVERE]: Zaman aşımına uğradı renderer'dan mesaj alma: 0.100 [1581412934.168] [SEVERE]: renderer'dan mesaj alma zaman aşımına uğradı: 0.100 [1581412934.360] [SEVERE]: renderer'dan mesaj alma zaman aşımına uğradı: 0.100 [1581412934.461] [SEVERE]: renderer'dan mesaj alma zaman aşımına uğradı: 0.100 [1581412934.618] [SEVERE]:

PageLoad Stratejisi ile - İstekli:

Kod Parçacığı:

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();

Konsol Çıkışı:

1175 numaralı bağlantı noktasından ChromeDriver 80.0.3987.16'yı (320f6526c1632ad4f205ebce69b99a062ed78647-refs / şube kafaları / 3987 @ {# 185}) başlatma Yalnızca yerel bağlantılara izin verilir. Kötü amaçlı kodlarla erişimi önlemek için lütfen ChromeDriver tarafından kullanılan bağlantı noktalarını ve ilgili test çerçevelerini koruyun. 11 Şub 2020 10:29:05 AM org.openqa.selenium.remote.ProtocolHandshake createOturum Bilgileri: Algılanan lehçe: W3C
21


WebDriver yapılandırmaları standartlaştırıldığı ve gerekli test stratejisine en uygun olduğu için genellikle PageLoad Stratejisini değiştiremezsiniz. Ancak, Selenyum'un tam sayfa yüklenmesini beklememesini sağlama tartışmalarında , Bir sayfanın yüklenmesini beklemeyin . Ayrıntılarıyla tartıştık. ChromeDriver v80 ile ilgili bir sorun var.
DebanjanB

2
@DebanjanB Size katılıyorum ama bildiğiniz gibi SO sorunları çözmek için bir topluluk. Mümkün olan en iyi çözümü denedim. Chrome sürücüsünde ISSUE veya BUG olduğunu biliyorsanız, bu sorunu Git projelerine veya önerilen yerlerine kaydetmeliyiz. SO'da soru sormak yardımcı olmaz.
Muzzamil

Kısa bir süre önce krom ve krom sürücümü güncelledik ve tüm bu uyarı mesajlarını almaya başladım. Şimdi kromumu eski sürüme geçirmeye çalışıyorum ve krom 79v'yi nereden bulacağımı bulamıyorum. Birisi bana krom 79v
Vin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.