Waktu habis saat menyambungkan ke Chrome, mencoba lagi… kesalahan menggunakan ChromeDriver 2.43 dan Chrome melalui Selenium

Aug 16 2020

Sejujurnya saya bahkan tidak yakin apa yang harus dilakukan pada saat ini. Saya tidak mendapatkan log kesalahan di konsol hanya pesan logger yang saya masukkan ke dalam skrip.

Ketika saya sampai ke baris kode tempat saya membuat Pembuat Dasbor, pengujian akan dihentikan dan dinyatakan gagal, pesan terakhir yang dicatat selalu "Tentang untuk mulai mencari"

Saya bahkan memusnahkan seluruh konstruktor (mengomentari semua kode, menghapus parameter driver, dan hanya meletakkan pernyataan cetak di dalamnya) sebelum memposting pertanyaan ini dan ketika saya memanggil metode cetak dalam kelas, skrip gagal pada baris tempat pembuatan konstruktor terjadi.

Saya tidak mengerti apa yang terjadi. Saya mungkin melewatkan sesuatu yang sangat jelas. Saya mendapatkan kegagalan tetapi saya juga tidak melihat pesan kesalahan tertentu di konsol.

Berikut adalah kasus uji yang saya coba jalankan:

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

Ini adalah pageObject DashBoard saya

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

Kesalahan konsol:

Jawaban

DebanjanB Aug 16 2020 at 22:27

Pesan kesalahan ini ...

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

... menyiratkan bahwa menyiratkan bahwa kombinasi ChromeDriver / google-chrome yang Anda gunakan bukan yang terbaru karena penerapan ChromeDriver saat ini mengikuti spesifikasi WebDriver W3C dan log awal mencerminkan:

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 

Jadi masalah utama Anda adalah ketidakcocokan antara versi biner yang Anda gunakan sebagai berikut:

  • Anda menggunakan chromedriver = 2.43
  • Catatan Rilis chromedriver = 2.43 dengan jelas menyebutkan hal-hal berikut:

Mendukung Chrome v69-71

  • Mungkin Anda menggunakan chrome = 84.0 terbaru
  • Catatan Rilis ChromeDriver v84.0 dengan jelas menyebutkan hal berikut:

Mendukung Chrome versi 84

Jadi, ada ketidakcocokan yang jelas antara ChromeDriver v2.43 dan Browser Chrome v84.0


Larutan

Memastikan bahwa:

  • JDK ditingkatkan ke level saat ini JDK 8u251 .
  • Selenium ditingkatkan ke level saat ini Versi 3.141.59 .
  • ChromeDriver diupdate ke level ChromeDriver v84.0 saat ini .
  • Chrome diperbarui ke tingkat Chrome Versi 84.0 saat ini . (sesuai catatan rilis ChromeDriver v84.0 )
  • Jika versi Klien Web dasar Anda terlalu lama, maka copot pemasangannya dan pasang GA terbaru dan versi Klien Web yang dirilis .
  • Bersihkan Anda Proyek Workspace melalui Anda IDE dan Membangun kembali proyek Anda dengan dependensi yang diperlukan saja.
  • Lakukan Reboot Sistem .
  • Jalankan Anda @Testsebagai pengguna non-root .
  • Selalu panggil driver.quit()dalam tearDown(){}metode untuk menutup & menghancurkan instance WebDriver dan Klien Web dengan baik.

Referensi

Anda dapat menemukan beberapa diskusi rinci yang relevan di:

  • Mencoba sesi dua dialek, dengan asumsi Hukum Postel berlaku di ujung jarak jauh & Kembali ke OSS JSON asli menggunakan ChromeDriver dan Selenium
abracants Aug 16 2020 at 09:19

Saya pikir masalahnya di sini adalah bahwa Driver belum menginisialisasi di DashBoard Class.

coba untuk memperluas DashBoard ke BaseClass.

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

}