Превышено время ожидания подключения к Chrome, повторная попытка… ошибка при использовании ChromeDriver 2.43 и Chrome через Selenium
Честно говоря, я даже не уверен, что делать в этот момент. Я не получаю никаких журналов ошибок в консоли, только сообщения журнала, которые я вставил в сценарии.
Когда я перехожу к строке кода, в которой я создаю конструктор панели мониторинга, он завершает тест и объявляет его неудачным, последнее зарегистрированное сообщение всегда - «О начале поиска».
Я даже выпотрошил весь конструктор (закомментировал весь код, удалил параметр драйвера и просто поместил в него оператор печати), прежде чем опубликовать этот вопрос, и когда я вызвал метод печати в классе, сценарий завершился неудачно в строке, где создание конструктор получился.
Я не понимаю, что происходит, я могу упустить что-то очень очевидное. Я получаю сбой, но не всегда вижу в консоли конкретное сообщение об ошибке.
Вот тестовый пример, который я пытаюсь запустить:
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");
}
}
Вот мой объект DashBoard pageObject
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();
}
}
Ошибка консоли:
Ответы
Это сообщение об ошибке ...
...[WARNING]: Timed out connecting to Chrome, retrying...
...org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
... подразумевает, что это означает, что комбинация ChromeDriver / google-chrome, которую вы используете, не является последней, поскольку текущая реализация ChromeDriver соответствует спецификациям WebDriver W3C и отражается в начальных журналах:
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
Итак, ваша основная проблема - несовместимость между версиями двоичных файлов, которые вы используете, а именно:
- Вы используете chromedriver = 2.43
- Примечания к выпуску chromedriver = 2.43 четко упоминают следующее:
Поддерживает Chrome v69-71
- Возможно, вы используете последнюю версию chrome = 84.0
- Примечания к выпуску ChromeDriver v84.0 четко упоминают следующее:
Поддерживает Chrome версии 84
Таким образом, между ChromeDriver v2.43 и браузером Chrome v84.0 есть явное несоответствие.
Решение
Убедиться, что:
- JDK обновлен до текущего уровня JDK 8u251 .
- Selenium обновлен до текущего уровня. Версия 3.141.59 .
- ChromeDriver обновлен до текущего уровня ChromeDriver v84.0 .
- Chrome обновлен до текущего уровня Chrome Version 84.0 . (согласно примечаниям к выпуску ChromeDriver v84.0 )
- Если ваша базовая версия веб-клиента слишком старая, удалите ее и установите последнюю версию GA и выпущенную версию веб-клиента .
- Очистите свой Workspace Project через IDE и Rebuild ваш проект только с необходимыми зависимостями.
- Выполните перезагрузку системы .
- Выполните
@Test
как пользователь без полномочий root . - Всегда вызывайте
driver.quit()
внутриtearDown(){}
метода, чтобы корректно закрыть и уничтожить экземпляры WebDriver и Web Client .
Справка
Вы можете найти пару соответствующих подробных обсуждений в:
- Попытка сеанса с двумя диалектами при условии, что закон Постела выполняется на удаленном конце, и возврат к исходному OSS JSON с использованием ChromeDriver и Selenium
Я думаю, проблема здесь в том, что драйвер еще не инициализирован в классе DashBoard.
попробуйте расширить DashBoard до BaseClass.
public class Dashboard extends BaseClass {
public Dashboard(WebDriver driver) {
this.driver = driver;
PageFactory.initElements(driver, this);
}