Java Selenium - невозможно связаться с предупреждением как с Chrome, так и с Firefox

Я новичок в Selenium, и я написал следующий код для печати текста предупреждения и принятия предупреждения.

public class AlertPractice {

 public static void main(String[] args) throws InterruptedException {

    WebDriver driver  = new FirefoxDriver();
    driver.get("http://output.jsbin.com/usidix/1");

    driver.findElement(By.cssSelector("input[value=\"Go!\"]")).click();
    Thread.sleep(1000);
    String S = driver.switchTo().alert().getText();
    Thread.sleep(1000);
    driver.switchTo().alert().accept();

    System.out.println(S);
    driver.close();
}

При работе с драйвером FIREFOX я получаю следующее исключение:

org.openqa.selenium.firefox.NotConnectedException: невозможно подключиться к хосту 127.0.0.1 через порт 7055 через 45000 мс. Вывод консоли Firefox....

и при запуске с драйвером Chrome я получаю следующие исключения:

Исключение в потоке «основной» org.openqa.selenium.WebDriverException: неизвестная ошибка: невозможно определить статус загрузки из неожиданного открытия предупреждения (информация о сеансе: chrome = 53.0.2785.101) (информация о драйвере: chromedriver = 2.21.371459 ...

Любая помощь будет ценной.


person Aakash Goyal    schedule 10.09.2016    source источник


Ответы (2)


Похоже, проблема с версией Webdriver для Selenium в случае Firefox и версии Chromedriver для Chrome. Загружена и применена последняя бета-версия для селена и последняя версия хромированного драйвера для хрома. Теперь работает нормально.

person Aakash Goyal    schedule 11.09.2016

Чтобы запустить последнюю версию Mozilla Firefox, вам необходимо < a href="https://github.com/mozilla/geckodriver/releases" rel="nofollow noreferrer">загрузите последний исполняемый файл geckodriver, а затем следуйте этому ответу о том, как запустить последнюю версию Firefox с помощью селена.

Исключение в потоке «основной» org.openqa.selenium.WebDriverException: неизвестная ошибка: невозможно определить статус загрузки из неожиданного открытия предупреждения

На самом деле нет необходимости переключаться Alert два раза, чтобы получить текст предупреждения, а затем принять его. Вы можете выполнить обе эти задачи, используя одно переключение на Alert.

Лучше попробовать переключить Alert с помощью WebDriverWait для ожидания появления предупреждения вместо Thread.sleep(), как показано ниже: -

driver.findElement(By.cssSelector("input[value='Go!']")).click();

WebDriverWait wait = WebDriverWait(driver, 10);
Alert alert = wait.until(ExpectedConditions.alertIsPresent());

String S = alert.getText();
System.out.println(S);

alert.accept();
person Saurabh Gaur    schedule 10.09.2016
comment
А как же фаерфокс?? И такая же ошибка или TimeoutException?? - person Saurabh Gaur; 11.09.2016