Chrome'a ​​bağlanma işlemi zaman aşımına uğradı, yeniden deneniyor… ChromeDriver 2.43 ve Selenium aracılığıyla Chrome kullanılırken hata oluştu

Aug 16 2020

Dürüst olmak gerekirse, bu noktada ne yapacağımdan bile emin değilim, konsolda herhangi bir hata kaydı alamıyorum, sadece komut dosyalarına koyduğum günlük kaydedici mesajları.

Dashboard Constructor'ı oluşturduğum kod satırına geldiğimde, testi sonlandırıyor ve bir hata olarak ilan ediyor, son günlüğe kaydedilen mesaj her zaman "Bakmaya başlamak üzere" oluyor

Hatta bu soruyu göndermeden önce kurucunun tamamını çıkarttım (tüm kodu yorumladım, sürücü parametresini kaldırdım ve içine sadece bir print ifadesi koydum) ve sınıf içinde print yöntemini çağırdığımda komut dosyası oluşturulduğu satırda başarısız oldu. kurucu oldu.

Neler olduğunu anlamıyorum, çok bariz bir şeyi kaçırıyor olabilirim. Başarısız oluyorum ama konsolda mutlaka belirli bir hata mesajı görmüyorum.

İşte çalıştırmaya çalıştığım test senaryosu:

package com.symphio.testCases;
import java.util.concurrent.TimeUnit;
import org.testng.Assert;
import org.testng.annotations.Test;
import com.symphio.pageObjects.Dashboard;
import com.symphio.pageObjects.loginSymphio;


public class TC_Dashboard_Search_002 extends BaseClass{

    
    @Test
    public void searchForTile() throws InterruptedException {
        
        logger.info("Connected to "+ baseURL);
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
                
        loginSymphio login = new loginSymphio(driver);
        //logs in
        login.setUserName(userName);
        logger.info("entered username");
        login.setPassWord(passWord);
        logger.info("entered password");
        login.pressSubmit();
        logger.info("button pressed");
        
        
        //searches for tile
        Thread.sleep(3000);


        logger.info("about to start looking");
        Dashboard dashboard = new Dashboard(driver);
        dashboard.mouseMover();
        logger.info("found Icon");
        dashboard.searchBarText(searchText);
        logger.info("input text");
        dashboard.tileClick();      
        logger.info("clicked");
                
    }
}

İşte DashBoard sayfam

package com.symphio.pageObjects;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;

public class Dashboard {
    WebDriver driver;

    public Dashboard(WebDriver driver) {
        this.driver = driver;
        PageFactory.initElements(driver, this);     
        
    } 
        
    @FindBy(className="search-container")
    WebElement searchImg;
    
    @FindBy(xpath="//input[@type='search']")
    WebElement searchText;
    
    @FindBy(xpath="//input[contains(@class,'mat-card'), and contains(@class, 'mat-focus-indicator'), and contains(@class, 'arrangement-card')]")
    WebElement tileBox;
    
    
    Actions actions = new Actions(driver);

    public void mouseMover() {
    Actions mouseOverOnElement = actions.moveToElement(searchImg);
    mouseOverOnElement.perform();
    
    }
    
    public void searchBarText(String text) {
        searchText.sendKeys(text);
                
    }
    
    public void tileClick() {
        tileBox.click();
        
        
    }
    
}

Konsol hatası:

Yanıtlar

DebanjanB Aug 16 2020 at 22:27

Bu hata mesajı ...

...[WARNING]: Timed out connecting to Chrome, retrying...
...org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS

..., ChromeDriver'ın mevcut uygulaması WebDriver W3C spesifikasyonlarını izlediğinden ve ilk günlükler şunu yansıttığından , kullandığınız ChromeDriver / google-chrome kombinasyonunun yeni olmadığını ima eder :

Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
Nov 05, 2019 3:41:53 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C 

Yani asıl sorununuz, kullandığınız ikili dosyaların sürümleri arasındaki uyumsuzluk şu şekildedir:

  • Chromedriver = 2.43 kullanıyorsunuz
  • Chromedriver = 2.43 Sürüm Notları aşağıdakilerden açıkça bahsediyor:

Chrome v69-71'i destekler

  • Muhtemelen en son chrome = 84.0 kullanıyorsunuz
  • ChromeDriver v84.0 Sürüm Notları aşağıdakilerden açıkça bahsetmektedir:

Chrome 84 sürümünü destekler

Dolayısıyla, ChromeDriver v2.43 ile Chrome Tarayıcı v84.0 arasında açık bir uyumsuzluk var


Çözüm

Şunlardan emin olun:

  • JDK , mevcut JDK 8u251 seviyelerine yükseltildi .
  • Selenium , mevcut sürüm 3.141.59 sürümüne yükseltildi .
  • ChromeDriver , mevcut ChromeDriver v84.0 düzeyine güncellendi .
  • Chrome , mevcut Chrome Sürümü 84.0 düzeyine güncellendi . ( ChromeDriver v84.0 sürüm notlarına göre )
  • Temel Web İstemcisi sürümünüz çok eskiyse, bunu kaldırın ve Web İstemcisinin en son GA sürümünü ve yayınlanmış sürümünü yükleyin .
  • Temizlik sizin Proje Workspace sizin aracılığıyla IDE ve yeniden sadece gerekli bağımlılıkları ile projenizi.
  • Bir atın Sistem yeniden başlat .
  • Şu Verilerinizi Yürütme @Testolarak kök olmayan bir kullanıcı.
  • WebDriver ve Web İstemcisi örneklerini nazikçe kapatmak ve yok etmek için her zaman yöntem driver.quit()içinde çağırın .tearDown(){}

Referans

Birkaç ilgili ayrıntılı tartışmayı şurada bulabilirsiniz:

  • Postel'in Yasasının uzak uçta geçerli olduğunu varsayarak ve ChromeDriver ve Selenium kullanarak orijinal OSS JSON'a geri dönüldüğünü varsayarak, iki lehçeli oturum denemesi
abracants Aug 16 2020 at 09:19

Sanırım buradaki sorun, Sürücünün henüz DashBoard Sınıfında başlatılmamış olmasıdır.

DashBoard'ı BaseClass'a genişletmeyi deneyin.

public class Dashboard extends BaseClass {
    
    public Dashboard(WebDriver driver) {
        this.driver = driver;
        PageFactory.initElements(driver, this);  

}