Đã hết thời gian chờ kết nối với Chrome, đang thử lại… lỗi khi sử dụng ChromeDriver 2.43 và Chrome thông qua Selenium

Aug 16 2020

Thành thật mà nói, tôi thậm chí không chắc phải làm gì vào thời điểm này Tôi không nhận được bất kỳ nhật ký lỗi nào trong bảng điều khiển chỉ là các thông báo trình ghi mà tôi đã đưa vào các tập lệnh.

Khi tôi đến dòng mã nơi tôi tạo Trình tạo bảng điều khiển, nó sẽ kết thúc quá trình kiểm tra và tuyên bố là thất bại, thông báo được ghi cuối cùng luôn là "Sắp bắt đầu tìm kiếm"

Tôi thậm chí đã rút toàn bộ hàm tạo (đã nhận xét tất cả mã, loại bỏ tham số trình điều khiển và chỉ đặt một câu lệnh in trong đó) trước khi đăng câu hỏi này và khi tôi gọi phương thức in trong lớp, tập lệnh không thành công ở dòng nơi tạo hàm tạo đã xảy ra.

Tôi không hiểu chuyện gì đang xảy ra, tôi có thể thiếu một thứ gì đó rất rõ ràng. Tôi gặp lỗi nhưng tôi cũng không nhất thiết phải thấy một thông báo lỗi cụ thể trong bảng điều khiển.

Đây là trường hợp thử nghiệm tôi đang cố chạy:

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

Đây là trang DashBoard của tôi

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

Lỗi bảng điều khiển:

Trả lời

DebanjanB Aug 16 2020 at 22:27

Thông báo lỗi này ...

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

... ngụ ý rằng kết hợp ChromeDriver / google-chrome bạn đang sử dụng không phải là kết hợp gần đây vì việc triển khai hiện tại của ChromeDriver tuân theo thông số kỹ thuật của WebDriver W3C và nhật ký ban đầu phản ánh:

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 

Vì vậy, vấn đề chính của bạn là sự không tương thích giữa phiên bản của các tệp nhị phân bạn đang sử dụng như sau:

  • Bạn đang sử dụng chromedriver = 2,43
  • Ghi chú phát hành của chromedriver = 2,43 đề cập rõ ràng những điều sau:

Hỗ trợ Chrome v69-71

  • Có thể bạn đang sử dụng chrome = 84.0 mới nhất
  • Ghi chú phát hành của ChromeDriver v84.0 đề cập rõ ràng những điều sau:

Hỗ trợ phiên bản Chrome 84

Vì vậy, có sự không khớp rõ ràng giữa ChromeDriver v2.43Trình duyệt Chrome v84.0


Giải pháp

Đảm bảo rằng:

  • JDK được nâng cấp lên cấp độ hiện tại JDK 8u251 .
  • Selenium được nâng cấp lên mức hiện tại Phiên bản 3.141.59 .
  • ChromeDriver được cập nhật lên cấp ChromeDriver v84.0 hiện tại .
  • Chrome được cập nhật lên cấp Phiên bản Chrome 84.0 hiện tại . (theo ghi chú phát hành ChromeDriver v84.0 )
  • Nếu phiên bản Ứng dụng khách web cơ sở của bạn quá cũ, hãy gỡ cài đặt nó và cài đặt GA và phiên bản Ứng dụng khách web đã phát hành gần đây .
  • Làm sạch không gian làm việc dự án của bạn thông qua IDE của bạn và xây dựng lại dự án của bạn chỉ với các phụ thuộc bắt buộc.
  • Hãy Hệ thống khởi động lại .
  • Thực thi @Testvới tư cách là người dùng không phải root của bạn .
  • Luôn gọi phương thức driver.quit()trong tearDown(){}để đóng và hủy các cá thể WebDriverWeb Client một cách duyên dáng.

Tài liệu tham khảo

Bạn có thể tìm thấy một số cuộc thảo luận chi tiết có liên quan trong:

  • Cố gắng phiên phương ngữ hai mặt, giả sử Định luật Postel đúng ở đầu từ xa & Quay trở lại OSS JSON ban đầu bằng ChromeDriver và Selenium
abracants Aug 16 2020 at 09:19

Tôi nghĩ rằng vấn đề ở đây là Trình điều khiển chưa được khởi tạo trong Lớp DashBoard.

cố gắng mở rộng DashBoard vào BaseClass.

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

}